2013-09-27 45 views
0

我有兩個具有相同字段的表。 (請不要責怪設計)。
下面只對示例模式SQL查詢,從不同的表中查詢到單個字段名稱

表A
ID

電話

表B
ID


地址

所以,我想查詢id,名稱從表A或B,它們滿足單個查詢條件'鍵',返回字段只是「ID」和「NAME」,不管它來自tableA或tableB
用簡單的查詢

SELECT a.id,a.name,b.id,b.name FROM TABELA爲a,TABLEB爲b WHERE a.keys = '1' 或b.keys = '1'

它將重複的id,name,id1,name1返回結果字段。

回答

1

使用UNION例子,而不是CROSS JOIN

SELECT a.id, a.name 
FROM TABELA as a 
WHERE a.keys = '1' 
UNION 
SELECT b.id, b.name 
FROM TABLEB as b 
WHERE b.keys = '1' 
1

使用union或union all。聯盟只返回重複行,UNION ALL返回所有行

看到手冊manual on unions

SELECT a.id, a.name FROM TABELA as a WHERE a.keys = '1' 
union 
SELECT b.id, b.name FROM TABELb as b WHERE b.keys = '1' 
1

你實際上並沒有連接表,但你想要組合兩個不同查詢的結果。我們對此有UNION SELECT:

SELECT id, name FROM tableA 
    WHERE keys = '1' 
UNION SELECT id, name FROM tableB 
    WHERE keys= '1' 

如果要排序結果,可以使用上面的子查詢。

相關問題