mysql如果存在则选择,如果不存在则用no显示值

nimxete2  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(351)

给出如下简单查询:

SELECT * from foo WHERE id IN (ids)

比如说我把身份证给你 1,2,3 和id 1 以及 2 存在和 3 没有。如何编写此查询,使3行仍然显示,但1和2的值显示为“yes”,3的值显示为“no”?
我的查询只会返回id为1和2的记录的数据,但我希望它在我传入的每个id中都显示出来,但用一个简单的“否”表示表中没有的记录

2lpgd968

2lpgd9681#

您需要创建一个包含所有id的关系,然后离开join foo 在身份证上。在一个 CASE 然后您可以从 foo 存在 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;

相关问题