mysql - 动态创建内联 SQL 表(用于排除左连接)

标签 mysql sql rdbms

假设如下:

表 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的1314的结果集。

如何仅使用 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/

相关文章:

mysql - 我如何约束可能引用多个其他表的外键关系?

mysql - 非英文字符在 phpMyAdmin (xampp) 中的 mysql 数据库中未正确显示

java - 不同的行为取决于数据库中的异常

c# - 从两个逗号分隔的参数作为输入更新表

sql - 连续时间戳对之间间隔的中值长度

SQL 查询查找从日期 x 到日期 y 的可用房间

database-design - 概念数据建模 : How to read a recursive many to many relationship

php - Mysql在缺少html图像时创建双插入

php - mysql,其中链接表为 null 或不等于某个 id

sql - 如果我在列上使用 SQLite 自动递增,它会自动维护该列的索引吗?