从两个相同的表但不完全相同的表获取值所需的SQL查询

时间:2015-12-10 12:21:28

标签: mysql sql sql-server

假设我们有两个表A和B.

A保持4行,B保持3行。 在表A和表B中,几个列值相同,因此有助于映射。

我想构建一个查询,该查询将获取表B下的所有详细信息,并将从表A中获取不在表A中的记录。

String expr0 = "//node[@lat='53.0705997'][@lon='8.7818627']/tag["+i+"]/@v";

所以我需要一个可以得到结果的查询

Table A                
001 ABC Tango          
002 XYZ Alpha          
003 PQR Beta           
004 DEF Gamma

Table B
001 ABC Tango Delhi
002 XYZ Alpha Mumbai
003 PQR Beta Pune

前三行来自表B,后四行来自表A,因为特定数据不在表B中。

如果有人可以为我建立一个查询,请告诉我。

3 个答案:

答案 0 :(得分:0)

SELECT *, NULL AS Field4
FROM TableA
WHERE Field1 NOT IN (SELECT Field1 FROM TableB)
UNION ALL
SELECT *
FROM TableB

答案 1 :(得分:0)

只是为了踢,如果你想使用连接解决方​​案:

SELECT CASE WHEN TableB.Field1 IS NULL THEN TableA.Field1 ELSE TableB.Field1 END AS Field1
, CASE WHEN TableB.Field1 IS NULL THEN TableA.Field2 ELSE TableB.Field2 END AS Field2
, CASE WHEN TableB.Field1 IS NULL THEN TableA.Field3 ELSE TableB.Field3 END AS Field3
, TableB.Field4
FROM TableB
FULL JOIN TableA ON TableA.Field1 = TableB.Field1

答案 2 :(得分:0)

执行FULL OUTER JOIN

select b.col1, b.col2, b.col3, a.col3
from b
  FULL OUTER JOIN a on a.col1 = b.col1 and a.col2 = b.col2