假设如下:
表 A
id | value
----------
1 | red
2 | orange
5 | yellow
10 | green
11 | blue
12 | indigo
20 | violet
我有一个 id 列表 (10, 11, 12, 13, 14
),可用于在此表中查找 id。这个 id 列表是在我的前端生成的。
使用纯 SQL,我需要从此列表(10、11、12、13、14
)中选择表 A 中没有条目的 id(加入 'id' 列)。结果应该是id的13
和14
的结果集。
如何仅使用 SQL 来完成此操作? (另外,如果可能的话,我想避免使用存储过程)
我能想到的唯一方法是动态创建一个内联 SQL 表来临时保存我的 id 列表。但是,我不知道该怎么做。这可能吗?有没有更好的办法?
谢谢! :)
最佳答案
您可以从 SQL Server 2008 开始使用表值构造函数执行此操作。
SELECT * FROM (
VALUES(1, 'red'),
(2, 'orange'),
(5, 'yellow'),
(10, 'green'),
(11, 'blue'),
(12, 'indigo'),
(20, 'violet'))
AS Colors(Id, Value)
更多信息在这里: Table Value Constructor
关于mysql - 动态创建内联 SQL 表(用于排除左连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10709464/