所以我有两个单独的表。在第一个表中,有一堆具有 ID 的广告组。第二个表中有一堆广告,其中有一列包含每个广告的 ad_group 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);
最佳答案
据我了解,您存储的 ad_group_id 包括 id1、id2、id3 等。 如果是,则此关系是多对多,并且可以更有效地创建附加表 2 列 ad_id、ad_group_id。但这取决于您的数据量。
关于mysql - 从另一个表中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7127734/