使用MySql vers 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上的回答
发布于 2021-03-26 15:36:14
这至少是您要做的事情的正确语法。
如果这个查询不是一个学习练习,那么我会重新考虑这个方法,将这些'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 NULLhttps://stackoverflow.com/questions/66819635
复制相似问题