Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从数据库中不存在的输入列表中选择id_Mysql_Sql_Select - Fatal编程技术网

Mysql 从数据库中不存在的输入列表中选择id

Mysql 从数据库中不存在的输入列表中选择id,mysql,sql,select,Mysql,Sql,Select,使用MySql 8.0版本: CREATE TABLE cnacs(cid VARCHAR(20), PRIMARY KEY(cid)); 那么 前两条语句执行成功。然而,下一句话没有。我的目标是从输入表[1,2]返回一个未使用的cid列表: SELECT * FROM (VALUES ('1'),('2')) as T(cid) EXCEPT SELECT cid FROM cnacs; 理论上,我希望输出为“2”,因为它还没有被添加。前面提到的查询是受Remus在上的回答启发的,这至少是

使用MySql 8.0版本:

CREATE TABLE cnacs(cid VARCHAR(20), PRIMARY KEY(cid));
那么

前两条语句执行成功。然而,下一句话没有。我的目标是从输入表[1,2]返回一个未使用的cid列表:

SELECT * FROM (VALUES ('1'),('2')) as T(cid) EXCEPT SELECT cid FROM cnacs;

理论上,我希望输出为“2”,因为它还没有被添加。前面提到的查询是受Remus在

上的回答启发的,这至少是您试图做的事情的正确语法

如果这个查询不仅仅是一个学习练习,那么我会重新考虑这个方法,将这些“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

您使用的是哪种数据库管理系统?并非所有产品在SQL-2016之外都具有以下功能:F641,行和表构造函数,F591,派生表和F661,简单表。MySQL不支持使用该语法的
VALUES()
。作为参考,我使用:完美,谢谢。在这个特定的例子中,我只需要一个唯一的ID,所以我只需将LIMIT 1附加到查询中,并在return中获得1行。我是初学者,认为所有SQL语言都是语法上的unified@ThomasBraun有很多共同点,所有主要的DBMS产品都支持ansi标准,但除此之外,每个产品都有自己的特点。不管出于什么原因,MySql确实比大多数MySql都有更多的细节。有好的sql语言转换服务吗?我希望使用pgsql、sqlite和mssql@ThomasBraun可能有一些工具声称可以做到这一点,但根据我的经验,那些声称可以做到这一点的工具很少能达到销售目标。如果可移植性很重要,那么最好的选择就是尽可能地遵循ansi标准,并且只有在提供了显著简化的情况下才使用特定于平台的sql。例如,早期MySql版本不支持窗口函数,但它们确实可以简化查询。您可以使用类似于though的工具来检查给定的查询/语法是否可以在这些平台上运行。
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