【发布时间】:2021-03-26 15:15:51
【问题描述】:
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
上的回答【问题讨论】:
-
您使用的是哪个 dbms?并非所有产品都具有 SQL-2016 之外的以下功能:F641、行和表构造函数、F591、派生表和 F661、简单表。
-
MySQL 不支持
VALUES()的语法。 -
作为参考,我使用的是:dbfiddle.uk/…