mytable
包含1、2、3、10、12 id
和20的记录,特别是不包含id
5和15的记录。
如何执行一些查询,例如:
SELECT id, id IN (1,5,10,15,20) AS status
FROM mytable
WHERE id IN (1,5,10,15,20);
并返回记录:
id status
1 true
5 false
10 true
15 false
20 true
如果还有其他表,我可以外部连接mytable,但没有一个。以下内容当然不起作用,但是我可以加入某种虚构的表格吗?
SELECT id, isnull(mytable.id) AS status
FROM *
LEFT OUTER JOIN mytable
WHERE id IN (1,5,10,15,20);
您可以在子句中创建派生表FROM
:
SELECT i.id, (t.id is not null) AS status
FROM (SELECT 1 as id UNION ALL SELECT 5 UNION ALL SELECT 10 UNION ALL SELECT 15 UNION ALL SELECT 20
) i LEFT JOIN
mytable t
ON i.id = t.id;
啊,我从来没有使用过这样的派生表,而只是动态地生成
IN
列表。可能会变得又大又丑(可能有成千上万的行)。有问题吗 也许最好将它留给应用程序?@ user1032531最好留给应用程序
@ M0rtiis会的。谢谢