主题:[讨论]還是SQL語句
GEORGECHIN
[专家分:440] 发布于 2009-11-21 14:46:00
下面一句SQL,其中的 EXISTS 不懂 請解疑
SELE COMMPANY FROM CUST A WHERE [color=FF0000]EXISTS[/color](SELE * FROM ORDERS B WHERE A.POSTCODE==B.POSTCODE)
回复列表 (共6个回复)
沙发
Vii [专家分:1130] 发布于 2009-11-21 15:09:00
包含.
就是查询CUST.POSTCODE=ORDERS.POSTCODE
板凳
GEORGECHIN [专家分:440] 发布于 2009-11-21 15:23:00
[quote]包含.
就是查询CUST.POSTCODE=ORDERS.POSTCODE[/quote]
那和以下這一句是不是等同:
SELE CUST.COMMPANY FROM CUST INNER JOIN ORDERS ON CUST.POSTCODE==ORDERS.POSTCODE
3 楼
hfrlzyb [专家分:70] 发布于 2009-11-21 16:20:00
SELE COMMPANY FROM CUST A WHERE EXISTS(SELE * FROM ORDERS B WHERE A.POSTCODE==B.POSTCODE)
包含的意思,相当于
select commpany from cust where postcode in (select postcode from orders)
很简单的一句不知为何写的如此深奥。
4 楼
GEORGECHIN [专家分:440] 发布于 2009-11-21 17:35:00
WHERE 子句中的IN和EXIST有何區別?
5 楼
Vii [专家分:1130] 发布于 2009-11-21 21:57:00
传说中EXISTS比IN的速度快.....
还有就是查询多条件重复(或者不重复)记录时间EXISTS比较方便吧.
WHERE条件可以多个,SELECT * FROM TABLENAME A EXISTS (SELECT 1 FROM TABLENAME B A.X=B.Y AND A.C=B.D ...)
6 楼
cbl518 [专家分:57140] 发布于 2009-11-21 22:13:00
EXISTS
是
in
的一种特殊形式,EXISTS 关键字的子查询,唯一允许带 * 的通配符!
从速度上来讲,EXISTS 比 in 慢的多!
我来回复