给定一个类似于
create table foo(id integer primary key, name varchar(128) unique not null);
我正在寻找一个查询,它搜索一个给定的名字,如果找到,返回id,否则返回NULL。
id
NULL
flseospp1#
对MAX()(或MIN())使用聚合:
MAX()
MIN()
SELECT MAX(id) AS id FROM foo WHERE name = ?;
这样的聚合查询始终只返回1行1列,如果没有name满足WHERE子句中的条件,则返回NULL。将?替换为所需的名称。请参阅demo。
name
WHERE
?
d8tt03nd2#
或者使用UNION:
UNION
(select id from foo where name='user1234' union select null) order by id desc limit 1;
DBFIDDLE
2条答案
按热度按时间flseospp1#
对
MAX()
(或MIN()
)使用聚合:这样的聚合查询始终只返回1行1列,如果没有
name
满足WHERE
子句中的条件,则返回NULL
。将
?
替换为所需的名称。请参阅demo。
d8tt03nd2#
或者使用
UNION
:DBFIDDLE