2011-08-19 181 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。但这取决于您的数据量。

相关问题