最好不要使用in,not in 。只有在in里面有固定的值得时候使用比较好。如:
1
2
3
4
5 |
SELECT [FirstName] ,[MiddleName] ,[LastName] FROM [AdventureWorks].[Person].[Contact] WHERE ContactID IN (25,33) |
any和all 关键字,在子查询使用的时候,效果如下:
如:
1
2
3
4
5 |
SELECT * FROM AdventureWorks.HumanResources.Employee WHERE SickLeaveHours>ANY (SELECT SickLeaveHours FROM AdventureWorks.HumanResources.Employee WHERE SickLeaveHours>68) |
not in 和 <> all等价。
join 和 inner join 一样是内连接
full join是 列出后面所有on 字段相关的列,过滤on字段可如下:
1
2
3
4
5
6 |
select case when t1.id1 is
null then t2.id2 else
t1.id1 end as
id, name1,name2 from t1 full join
t2 on t1.id1=t2.id2 |
union 会过滤掉根据查询的列过滤掉重复的
union all 会依次将所有的列数据列出来
参考资料 :http://www.w3school.com.cn/sql/sql_union.asp
http://www.cnblogs.com/lgzslf/archive/2012/10/18/2729316.html
相关子查询括号里面的查询条件和括号外面的字段比较。所以相关子查询括号里面的无法执行。如
1
2
3 |
(SELECT * FROM [AdventureWorks].[HumanResources].[Employee] e WHERE c.ContactID=e.ContactID AND e.SickLeaveHours>68) |
参考资料:http://www.cnblogs.com/CareySon/archive/2011/07/18/2109406.html
1 |
|
原文:http://www.cnblogs.com/brucetie/p/3579808.html