mysql - 从另一个表中选择值

标签 mysql sql

所以我有两个单独的表。在第一个表中,有一堆具有 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/

相关文章:

mysql - R - 在终端中运行命令并将输出保存到数据帧

php - mysql如果输入值为空则显示全部

sql - Spark/Scala - 当一列为 NULL 时比较数据框中的两列

存储为字符串的时间戳的 SQL 平均时间

php - 仅针对搜索查询将 varchar 转换为 int?

javascript - 如何根据数据库值在组中设置默认选中的单选按钮?

php - 修改并添加到 MySQL 结果

c# - sql语句帮助

mysql - 在 MySQL 表中存储运费,将来会添加许多列

sql - 忽略字段具有 NULL 值的记录