日期:2014-05-16 浏览次数:20554 次
数据库sql语句的exists总结 sql exists in 学习
?
先来比较下语法:
--deals=交易表,areas=地域表,例如香港;我们的目的:查看有交易的地域
select * from areas where id in (select city_id from deals);
select * from areas where?id?in? ?(select city_id from deals?where deals.city_id = areas.id);
select * from areas where exists (select null ? ? from deals where deals.city_id = areas.id);
区别:
EXISTS语法并没有说哪个字段落在了子查寻的结果中,而是说exists后面的语句执行的结果是不是有记录,只要有记录,则主查询语句就成立。它代表‘存在’,用来引领嵌套查询的子查询,它不返回任何数据,只产生逻辑真值‘true’与逻辑假值‘False’。由EXISTS引出的子查询,其目标列表达式通常都用*(用null也可以),因为带有EXISTS的子查询只返回真值或假值,给出列名没有实际意义。
?
select * from areas where?id?in? ?(select city_id from deals?where deals.city_id = areas.id);
--子查询的关联其实是一样的,但子查询只要查到一个结果,就返回了,所以效率还是比较高些的
?
select * from areas where?exists?(select null ? ? from deals where deals.city_id = areas.id);
?
1.
EXISTS的执行流程???????? select * from t1 where?exists?( select null from t2 where y = x ) 可以理解为: ??? for x?in?( select * from t1 ) ??? loop ?????? if (?exists?( select null from t2 where y = x.x ) ?????? then? ????????? OUTPUT THE RECORD ?????? end if ??? end loop 对于in和
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|