代码之家  ›  专栏  ›  技术社区  ›  Michael

SQL从数据库中尚未包含此数据的查询中选择数据?

  •  3
  • Michael  · 技术社区  · 16 年前

    在进行web服务调用之前,我想检查数据库中已经记录的记录。

    SELECT * 
      FROM (1,2,3,4) as temp_table 
     WHERE temp_table.id 
    LEFT JOIN table ON id IS NULL 
    

    有办法吗?这样的查询叫什么?

    5 回复  |  直到 16 年前
        1
  •  1
  •   eftpotrm    16 年前

    为了确认我的理解是正确的,你需要传入一个数字列表,看看哪个数字是正确的 不是吗 是否存在于现有表中?实际上:

    SELECT Item
    FROM IDList I
        LEFT JOIN TABLE T ON I.Item=T.ID
    WHERE T.ID IS NULL
    

    看起来您可以动态地构建这个查询,在这种情况下,您可以通过将上面的更改为

    SELECT Number
    FROM (SELECT Number FROM Numbers WHERE Number IN (1,2,3,4)) I
        LEFT JOIN TABLE T ON I.Number=T.ID
    WHERE T.ID IS NULL
    

    http://www.sqlteam.com/article/parsing-csv-values-into-multiple-rows

    所有这些都假定您的数据库中有一个数字/计数表,但它们通常非常有用,我强烈建议您这样做。

        2
  •  2
  •   OMG Ponies    16 年前

       SELECT x.id
         FROM (SELECT @param_1 AS id
                 FROM DUAL
               UNION ALL
               SELECT @param_2
                 FROM DUAL
               UNION ALL
               SELECT @param_3
                 FROM DUAL
               UNION ALL
               SELECT @param_4
                 FROM DUAL) x
    LEFT JOIN TABLE t ON t.id = x.id
        WHERE x.id IS NULL
    

    如果需要支持不同数量的参数,可以使用:

        3
  •  0
  •   Levi Hackwith    16 年前
    SELECT * FROM table where id NOT IN (1,2,3,4)
    
        4
  •  0
  •   Chad Birch    16 年前

    SELECT id
    FROM table
    WHERE id IN (1,2,3,4);
    

    然后处理结果列表,从“要提交的记录”列表中删除查询返回的任何结果。

        5
  •  0
  •   easement    16 年前

    SELECT * FROM table WHERE id NOT IN (
            SELECT id FROM table WHERE 1
    );