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