Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 - Fatal编程技术网

Mysql 给出列表中存在而表中不存在的ID

Mysql 给出列表中存在而表中不存在的ID,mysql,Mysql,我有一个ID列表,比如(1,2,3,4,5,6)。我想知道列表中有多少id在表中不存在。我该怎么做 -- table -- id name 1 a 2 b 3 c 4 d 5 e 6 f 7 g 我得到的Id列表是1,2,3,4,5,6,7,8,9,10,11,12,13 因此,当查询时,我应该得到不在表中的结果,如8、9、10、11、12、13 SELECT 6-c FROM ( SELECT C

我有一个ID列表,比如(1,2,3,4,5,6)。我想知道列表中有多少id在表中不存在。我该怎么做

-- table --
id    name
1     a
2     b
3     c   
4     d  
5     e 
6     f
7     g 
我得到的Id列表是1,2,3,4,5,6,7,8,9,10,11,12,13

因此,当查询时,我应该得到不在表中的结果,如8、9、10、11、12、13

SELECT 
  6-c
FROM (
  SELECT 
    COUNT(DISTINCT(ID)) as c 
  FROM 
    my_table 
  WHERE 
    ID IN (1,2,3,4,5,6)
) as tmp
并找出哪些丢失了:

SELECT
    zID
FROM (
    SELECT 1 as zID UNION
    SELECT 2 as zID UNION
    SELECT 3 as zID UNION
    SELECT 4 as zID UNION
    SELECT 5 as zID UNION
    SELECT 6 as zID UNION
    SELECT 7 as zID UNION
    SELECT 8 as zID UNION
    SELECT 9 as zID UNION
    SELECT 10 as zID UNION
    SELECT 11 as zID UNION
    SELECT 12 as zID UNION
    SELECT 13 as zID UNION
    SELECT 14 as zID UNION
    SELECT 15 as zID UNION
) as t1
LEFT JOIN (
    SELECT 
        DISTINCT(ID) as mID 
    FROM 
        my_table 
) as t2
    ON t1.zID = t2.mID
WHERE
    t2.mID IS NULL
试试这个:

SELECT 
  6-c
FROM (
  SELECT 
    COUNT(DISTINCT(ID)) as c 
  FROM 
    my_table 
  WHERE 
    ID IN (1,2,3,4,5,6)
) as tmp
并找出哪些丢失了:

SELECT
    zID
FROM (
    SELECT 1 as zID UNION
    SELECT 2 as zID UNION
    SELECT 3 as zID UNION
    SELECT 4 as zID UNION
    SELECT 5 as zID UNION
    SELECT 6 as zID UNION
    SELECT 7 as zID UNION
    SELECT 8 as zID UNION
    SELECT 9 as zID UNION
    SELECT 10 as zID UNION
    SELECT 11 as zID UNION
    SELECT 12 as zID UNION
    SELECT 13 as zID UNION
    SELECT 14 as zID UNION
    SELECT 15 as zID UNION
) as t1
LEFT JOIN (
    SELECT 
        DISTINCT(ID) as mID 
    FROM 
        my_table 
) as t2
    ON t1.zID = t2.mID
WHERE
    t2.mID IS NULL

这将返回列表中不在表中的ID列表

SELECT t1.id
FROM (SELECT 1 id
      UNION
      SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) t1
LEFT JOIN MyTable t2
ON t1.id = t2.id
WHERE t2.id IS NULL
如果您经常这样做,您可能希望创建一个包含常量的永久表,例如

CREATE TABLE numbers (id int primary key);
INSERT INTO numbers (id) VALUES (0), (1), (2), ..., (1000);
然后你可以做:

SELECT t1.id
FROM numbers
JOIN MyTable t2
ON t1.id = t2.id
WHERE t1.id IN (1, 2, 3, 4, 5, 6)
AND t2.id IS NULL

这将返回列表中不在表中的ID列表

SELECT t1.id
FROM (SELECT 1 id
      UNION
      SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) t1
LEFT JOIN MyTable t2
ON t1.id = t2.id
WHERE t2.id IS NULL
如果您经常这样做,您可能希望创建一个包含常量的永久表,例如

CREATE TABLE numbers (id int primary key);
INSERT INTO numbers (id) VALUES (0), (1), (2), ..., (1000);
然后你可以做:

SELECT t1.id
FROM numbers
JOIN MyTable t2
ON t1.id = t2.id
WHERE t1.id IN (1, 2, 3, 4, 5, 6)
AND t2.id IS NULL


您在谈论哪个表?如何比较列表和包含id的表?这两列是在同一个表中吗?您只需要知道有多少列,还是需要知道缺少了哪些列?@SashiKant Kant-Mysql table@kevinm-它在表中的第一列。您在谈论哪个表?如何比较列表和包含id的表?这两列在同一个表中吗?你只需要知道有多少列,或者您需要知道缺少哪些?@SashiKant Kant-Mysql Table.@kevinm-表中的1列。@Stephan-我想要Id列表's@Hacker我已经添加了对的查询that@Stephan-但我有100-200个身份证's@Hacker我刚刚看到更新的问题,我已经更新了查询again@Stephan-我要身份证的清单's@Hacker我添加了查询that@Stephan-但我有100-200个身份证's@Hacker我刚刚看到更新的问题,我已经更新了查询again@Barmar-但我有100-200个身份证's@Hacker看我的第二个版本+1,我也试过同样的版本@巴尔马-但我得到了100-200个ID的列表's@Hacker看我的第二个版本+1,我也试过同样的版本。