2011-08-19 128 views
0

所以我有兩個分開的表。在第一個表格中,有一堆廣告組擁有一個ID。在第二張表格中有一列廣告,其中有一列包含每個廣告的廣告組ID。 ad_group_id僅僅是廣告組表格中廣告組的ID。因此,我試圖選擇ad_group_id爲103,104,105,107,117117和120的所有廣告。從另一個表中選擇值

所以我嘗試了以下查詢。

SELECT * FROM ads WHERE ad_group_id LIKE '%103%' OR ad_group_id LIKE '%104%' 
OR ad_group_id LIKE '%105%' OR ad_group_id LIKE '%107%' OR ad_group_id LIKE '%117%' OR ad_group_id LIKE '%118%' OR ad_group_id LIKE '%120%'; 

那麼以前的查詢工作呢?是

我的查詢是否有效?沒有!

我想知道如何以更高效的方式運行以前的MySQL查詢。

編輯:

AD GROUP - table 1 
id name 
100 Tony 
100 David 
103 James 
104 Ann 
105 Jon 
150 Sara 

AD - table 2 
keyword ad_group_id 
that  103 
one   100 
is   105 
special  104 
no   100 
please  103 

所以我應該結束了:

that  103 
is   105 
special  104 
please  103 

希望是有道理的。

編輯2:

下面的代碼給出了相同的結果,是短,但我無法想象這樣做時,有更多的價值,我需要選擇。

SELECT * FROM ads WHERE ad_group_id IN (103,104,105,107,117,118,120); 
+0

你的問題並不完全清楚。您能否在這些表格中添加一些數據示例以及您要查找的結果? – Oded

+0

爲什麼「LIKE」?爲什麼不''=? –

+0

我是SQL新手,出於某種原因,我總是使用LIKE,除非我有我需要的特定值。 – ATMathew

回答

1

據我所知,您存儲了ad_group_id,如id1,id2,id3等。 如果是,則此關係爲多對多,並且更有效地創建附加表格,其中包含 2列ad_id,ad_group_id。但這取決於您的數據量。

相關問題