第二题:以下三个SQL语句的结果有什么不同?还是相同?(1)select table1.id,table1.数量,table2.名称
from table2 left outer join table1
on table2.id=table1.id and table1.数量>35---table1.数量>35 的所有行都被显示
(2)select table1.id,table1.数量,table2.名称
from table1 left outer foin table2
on table2.id=table1.id and table1.数量>35
---table2 的所有行都被显示
(3)select table1.id, table1.数量,table2.名称
from table1 left outer join table2
on table2.id=table1.id
where table1.数量>35
---同(1)
from table2 left outer join table1
on table2.id=table1.id and table1.数量>35---table1.数量>35 的所有行都被显示
(2)select table1.id,table1.数量,table2.名称
from table1 left outer foin table2
on table2.id=table1.id and table1.数量>35
---table2 的所有行都被显示
(3)select table1.id, table1.数量,table2.名称
from table1 left outer join table2
on table2.id=table1.id
where table1.数量>35
---同(1)
(select 编码,名称,数量 from tableA
union
select 编码,名称,数量 from tableB)
as a group by 编码,名称
(2)select 编码,名称,sum(数量) as 数量 from
(select 编码,名称,sum(数量) as 数量 from tableA group by 编码,名称union
select 编码,名称,sum(数量) as 数量 from tableB group by 编码,名称)
as a group by 编码,名称---结果相同
(2)如果子统计有相同的行也会去掉再统计,也不准确第二题:
(1)table2与table1中数量>35的行作left outer join,显示table2中的所有记录,与table1相关数据>35的值将显示,其它为NULL(2)table1与table2作left outer join,显示table1中的所有记录,但显示table2中的值时只与table1相关数据>35的值,其它为NULL(3)table1的数据>35的行与table2作left outer join
from table2 left outer join table1
on table2.id=table1.id and table1.数量>35---table1.数量>35 的所有行都被显示
(2)select table1.id,table1.数量,table2.名称
from table1 left outer foin table2
on table2.id=table1.id and table1.数量>35
---table2 的所有行都被显示
(3)select table1.id, table1.数量,table2.名称
from table1 left outer join table2
on table2.id=table1.id
where table1.数量>35
---同(1)