假设在数据库的表 user 中有一个字段 user_id , 其值有 (1,2,3,4,5) (也就是说有5行记录), 有一个外部给定列表 L (1,2,3,4,5,6,7)    要求找出在 L 中但不在数据库user表中的值 (6,7) 怎么写SQL 语句 ?
    最好一条 SQL 语句解决, 不用存储过程,或者其它复杂的解决方案。 

解决方案 »

  1.   

    select a.* from (
    select 1 as id 
    union all
    select 2 as id 
    union all
    ...
    union all
    select 7 as id ) a where id not in (select user_id from user)
      

  2.   

    select *
    from L
    where L.user_id not in (select user_id from user)
      

  3.   

    谢谢两位高手的热心解答! 可能是我没有问题没有阐述清楚, L 是外部的由程序生成的一个数组, 不是数据库中的表; 而且不可能一个个地列举, 我只是不想按照常规方法用 create temporary table 创建临时表,然后插入数据再查询, 这样虽然能达到目标,但太麻烦了。 我期望的是, 即使创建临时表,也能用一个干脆利落的语句解决。 
      

  4.   

    好吧, mysql 可能对数据库中的表的操作支持很完善, 但对于非数据库表的外部列表或字典类型可能并不作支持,非要将数据导入数据表才能操作(不知道是否真的如此), 这点我觉得还是比较遗憾的。