2012-02-27 80 views
0

首先查詢:如何在一個查詢在兩個不同的表上執行相同的查詢

SELECT `id` 
FROM (`videos`) 
WHERE `name` LIKE '%Dragon Ball Z (U.S.)%' 

和第二

SELECT `vid_id` as id 
FROM (`other_names`) 
WHERE `name` LIKE '%Dragon Ball Z (U.S.)%' 
GROUP BY `vid_id` 

我想要得到的是由LIKE唯一ID列表。

+0

兩張表的定義?他們是否與外鍵有關? – vulkanino 2012-02-27 16:28:00

回答

2

用'UNION'替換'and second'。 :)

SELECT `id` 
FROM (`videos`) 
WHERE `name` LIKE '%Dragon Ball Z (U.S.)%' 
UNION 
SELECT `vid_id` as id 
FROM (`other_names`) 
WHERE `name` LIKE '%Dragon Ball Z (U.S.)%' 

UNION(相對於UNION ALL)已經只返回獨特的物品,這樣你就不會需要GROUP BYSELECT DISTINCT。如果您認爲它更清晰,您可以編寫UNION DISTINCT,但可以省略它,因爲它是默認行爲UNION

+0

@GelozTrol Union不會從查詢中刪除重複項,以便查詢1返回重複項,而查詢2不同,並且如果將兩者結合,則將刪除重疊的任何查詢1和查詢2,但查詢1中的重複項將保留。糾正我,如果我錯了。我認爲這就是UNION DISTINCT vs UNION的原因 – Churk 2012-02-27 16:37:01

+0

@Churk你有沒有試過?正如我所描述的,「UNION」和「UNION DISTINCT」沒有區別。只有當你不想刪除重複時,你需要使用'UNION ALL',但@aTei明確要求唯一的ID。看看這裏:http://dev.mysql.com/doc/refman/5.0/en/union.html – GolezTrol 2012-02-27 16:40:03

+0

我想我錯了,謝謝參考。 – Churk 2012-02-27 16:43:18

相關問題