对于sql语句子查询   1在外 多在里, 可否详细介绍?? 谢谢

解决方案 »

  1.   

    SELECT * FROM TA T WHERE EXISTS(SELECT 1 FROM TB T WHERE ID=T.ID)--不存在改成NOT EXISTS
     
      

  2.   

    就用上面的语句来说吧,这个是写在where子句中的子查询:SELECT * FROM TA  WHERE EXISTS(SELECT 1 FROM TB  WHERE TA.ID=TB.ID)
    这个语句是这么运行的,每次从TA表中取出一个ID,在TB表中通过ID=T.ID来查询记录,如果查到就返回1,注意外面的exists就会做一个判断,当有记录时,也就是返回1时,那么说明TA表中的这个id在TB表中也存在,那么就通过select *来显示TA表的记录,要是没有就不显示。另外,还有一种写在select子句中的子查询:
    SELECT TA.*,(SELECT TB.ID FROM TB T WHERE ID=T.ID)
    FROM TA  
      

  3.   

    SELECT * FROM TA WHERE EXISTS(SELECT 1 FROM TB WHERE TA.ID=TB.ID)
    这个语句是这么运行的,每次从TA表中取出一个ID,在TB表中通过ID=T.ID来查询记录,如果查到就返回1,注意外面的exists就会做一个判断,当有记录时,也就是返回1时,那么说明TA表中的这个id在TB表中也存在,那么就通过select *来显示TA表对应的记录,要是没有就不显示。
    这个解释正确