mysql - 从数据库中不存在的输入列表中选择 id
问题描述
使用 MySql 8.0 版:
CREATE TABLE cnacs(cid VARCHAR(20), PRIMARY KEY(cid));
然后,
INSERT INTO cnacs VALUES('1');
前两条语句成功执行。然而,下一个声明没有。我的目标是从输入表 [1, 2] 返回未使用的 cid 列表:
SELECT * FROM (VALUES ('1'),('2')) as T(cid) EXCEPT SELECT cid FROM cnacs;
理论上,我希望输出为“2”,因为它尚未添加。上述查询的灵感来自 Remus 在https://dba.stackexchange.com/questions/37627/identifying-which-values-do-not-match-a-table-row上的回答
解决方案
这至少是您尝试做的正确语法。
如果这个查询不仅仅是一个学习练习,尽管我会重新考虑这种方法,将这些 '1' 和 '2' 值(或者最终存在的许多值)存储在他们自己的表中
SELECT Column_0
FROM (SELECT * FROM (VALUES ROW('1'), ROW('2')) TMP) VALS
LEFT
JOIN cnacs
ON VALS.Column_0 = cnacs.cid
WHERE cnacs.cid IS NULL
推荐阅读
- javascript - 用 jest 模拟其他模块中的函数依赖关系
- php - 将值传递给另一个类 php
- java - 需要在一个 git 存储库中调用两个分支
- amazon-web-services - 每次我在 Cloudflare 后面运行代码时都会出现 520 错误
- ms-word - 如何在文档正文中使用 Office.js 插入表格时添加合并字段
- post - 如何放心地使用 pojo 和 lombok builder 构建请求主体
- typeorm - 是否可以使用 Typeorm 进行完全连接?
- json - 在 Mule 中使用 Dataweave 读取数组值
- html - 为什么 ul 元素的填充区域和 CSS 中的子元素分开?
- java - HttpErrorResponse : 内部服务器错误