连接两表查询结果的SQL语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接两表查询结果的SQL语句相关的知识,希望对你有一定的参考价值。
如果只查询两个表有对应关系的资料,则用内连接:select
*
from
table1
inner
join
table2
on
table1.id=table2.id;
如果查询表1中有的资料,表2中若有则也显示,则使用左连接:
select
*
from
table1
left
join
table2
on
table1.id=table2.id;
不管两个表是否有关联,所有资料都显示,则用外链接:
selecg
*
from
table1
outer
join
table2
on
table1.id=table2.id; 参考技术A 我现在需要将两个表里查询的结果结合到一个数据集里?
是需要将结果放在一起,并且列的个数不变的话就使用
union(如果允许重复出现相同的记录就是用
union
all);
如果是需要将结果拼接起来(列的数目是两个表列数之和)就使用join将两个表拼接起来,
^_^,不同的情况不同的处理,应该可以搞定!本回答被提问者采纳
sql两表连接
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:
select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的
2:
select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
以上是关于连接两表查询结果的SQL语句的主要内容,如果未能解决你的问题,请参考以下文章
SQL server 两个查询结果拼接成一个,语句改怎样修改?