有一个下拉菜单中的值是从数据库表A中取出来、举个不恰当的例子,比如有1,2,3,4,5,6,7(表示包子的ID)
     
     但是别人吃过的包子,我们就不能吃。    所以在另外一张表 B(已经被咬过的包子ID构成的表) 中 ,我们要取出1,3,5这三个值.然后要在显示的下拉菜单中,排除这三个值、只有2,4,6,这三个值、
 
      不知道怎么做?什么思想,或者代码都可以、让我参考一下。谢谢。

解决方案 »

  1.   

    SELECT ID FROM A WHERE ID NOT IN (SELECT ID FROM B) 
      

  2.   

    select * from A where id not in (select id from B)
      

  3.   

    SELECT ID FROM A WHERE ID not exists (SELECT ID FROM B)
    如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。用not exists都比not in要快
    not in 逻辑上不完全等同于not exists,如果你误用了not in,小心你的程序存在致命的BUG: