【发布时间】:2014-07-11 09:44:42
【问题描述】:
您好,我有 2 个具有相同列名的表(Id、FName、LName、DOB、Type、Contact、Add)。
现在我想将所有数据作为单独的行获取,这些数据在两个表中具有相同的 FName、LName 和 DOB,按 Fname 的顺序排列。
我尝试使用 intersect 和 Union 但对我不起作用。
Select * from #t1 where FirstName in (select FirstName from #t2 ) and LastName in (select LastName from #t2 ) and DateOfBirth in (select DateOfBirth from #t2 )
UNION
Select * from #t2 where FirstName in (select FirstName from #t1 ) and LastName in (select LastName from #t1 ) and DateOfBirth in (select DateOfBirth from #t1 ) order by FirstName ,LastName
谢谢
【问题讨论】:
-
为什么不起作用?是什么事情让你这么说?你知道
UNION自己执行GROUP BY操作,对吧?如果您希望所有行不考虑重复,请使用UNION ALL。 -
在我的情况下它不起作用,因为它会检查 T2 的所有数据中的 FirstName 以及 Lastname 和 Dob 的相同。
-
好的,看起来 Nithesh 在我完成打字之前已经提供了合适的答案。但要小心标记多个数据库平台 - 并非所有语法在所有平台上都是通用的(尽管在这种情况下很好)。
-
@Steve Pettifer:仍然没有得到正确的解决方案。请阅读我对 Nilesh 帖子的评论。
标签: mysql sql sql-server sql-server-2008