给出如下简单查询:
SELECT * from foo WHERE id IN (ids)
比如说我把身份证给你 1,2,3 和id 1 以及 2 存在和 3 没有。如何编写此查询,使3行仍然显示,但1和2的值显示为“yes”,3的值显示为“no”?我的查询只会返回id为1和2的记录的数据,但我希望它在我传入的每个id中都显示出来,但用一个简单的“否”表示表中没有的记录
1,2,3
1
2
3
2lpgd9681#
您需要创建一个包含所有id的关系,然后离开join foo 在身份证上。在一个 CASE 然后您可以从 foo 存在 NULL 和输出 'no' 如果是的话, 'yes' 否则。
foo
CASE
NULL
'no'
'yes'
SELECT x.id, CASE WHEN f.id IS NULL THEN 'no' ELSE 'yes' END yesorno FROM (SELECT 1 id UNION ALL SELECT 2 id UNION ALL SELECT 3 id) x LEFT JOIN foo f ON f.id = x.id;
1条答案
按热度按时间2lpgd9681#
您需要创建一个包含所有id的关系,然后离开join
foo
在身份证上。在一个CASE
然后您可以从foo
存在NULL
和输出'no'
如果是的话,'yes'
否则。