EXISTS表示存在 NOT EXISTS就表示不存在了select * from ktab 
   where not exists (select * from kstab where khh=ktab.khh)表示ktab表中的不存在于kstab 表的记录下面的同理

解决方案 »

  1.   

    一般情况下,你完全可以把查询理解为2层的for循环。比如第一个:
    select * from ktab 
      where not exists (select * from kstab where khh=ktab.khh)
    go就是对于外层循环ktab的没一条记录,用这个记录的khh字段,放到not exists中,与里面的kstab的khh关联,
    如果能连接上,那么就不返回外层的ktab的这条记录,如果在内层没有这条记录,那么就返回这条记录。第二个也是一样,可以了解为3层for循环。
      

  2.   

    根据字面理解 not exists  就是不存在,exists 就是存在 
      

  3.   

    第一个好像能理解,第2个:查询所用客户都订购了的商品的商品信息,这句话怎么变换成SQL语句的形式呢?
      

  4.   

    第一个好像能理解,第2个:查询所用客户都订购了的商品的商品信息,这句话怎么变换成SQL语句的形式呢?这个第2个语句:
    查询所用客户都订购了的商品的商品信息:
    select * from stab
      where not exists (select * from ktab
        where not exists (select * from kstab
          where sph=stab.sph and khh=ktab.khh ))就是对stab中的每一个商品,在ktab表中不存在一个客户,与这个商品的对应关系,是不在 kstab表中的。
    也就是这个商品和每个客户的对应关系,都存在于kstab中。