sql – 当不满足其中一个条件时返回行

我需要从ID可能不存在的表中获取ID列表和相应的字段.例如,表格如下:

 id  | status
-------------
1234 | A
4567 | B
1020 | C

我想从id = 4567和id = 7777的行中获取状态,如下所示:

Result:
 id  | status
-------------
4567 | B
7777 | 

由于没有id = 7777的记录,因此应显示空状态字段.

到目前为止我所拥有的:当没有任何ID匹配的记录时,通过将结果与DUAL连接,我可以得到一个空行.例如:

SELECT id, status FROM DUAL LEFT OUTER JOIN mytable ON id='7777'

给出一个空行的结果:

 id  | status
-------------
     | 

但是为条件添加有效的id只返回一行:

SELECT id, status FROM mytable WHERE (id='7777' OR id='4567')

 id  | status
-------------
4567 | B

即使没有记录,如何使查询返回带有请求ID的行?

最佳答案

SELECT  q.id, m.status
FROM    (
        SELECT  4567 AS id
        FROM    dual
        UNION ALL
        SELECT  7777 AS id
        FROM    dual
        ) q
LEFT JOIN
        mytable m
ON      m.id = q.id
点赞