标题可能比较困惑,不知道该怎么写。这就是我需要做的。我有两个表,cronjobs 和 cronjob_seeds。我需要在将 cronjob 添加到数据库之前查看它是否存在。
考虑这些表格:
定时任务:
-id- -callback_model- -callback_method-
1 movie_suggestion_model fetch_similar_movies
cronjob_seeds:
-cronjob_id- -seed-
1 seed1
1 seed2
在添加新的 cronjob 之前,我需要查看数据库中是否存在完全相同的 cronjob。我编写了以下查询,但如果 cronjob 有多个种子,则该查询不起作用。如果它只有一个种子,那么效果很好,但每次 cronjob 有多个种子时,它都不会返回任何内容。
SELECT `id`
FROM (`cronjobs`)
INNER JOIN `cronjob_seeds` ON `cronjob_seeds`.`cronjob_id` = `cronjobs`.`id`
WHERE `cronjobs`.`callback_model` = 'movie_suggestion_model'
AND `cronjobs`.`callback_method` = 'fetch_similar_movies'
AND `cronjob_seeds`.`seed` = '1'
AND `cronjob_seeds`.`seed` = 10
我错过了什么吗?我应该使用其他类型的连接吗?
而且,题外话,但是种子是回调方法的一个参数,我只是命名它有点奇怪。
最佳答案
您应该使用 IN 子句
将您的查询更改为:
SELECT `id`
FROM (`cronjobs`)
INNER JOIN `cronjob_seeds` ON `cronjob_seeds`.`cronjob_id` = `cronjobs`.`id`
WHERE `cronjobs`.`callback_model` = 'movie_suggestion_model'
AND `cronjobs`.`callback_method` = 'fetch_similar_movies'
AND `cronjob_seeds`.`seed` IN ('seed1', 'seed2')
关于MySQL:当连接表有多个结果时,为什么此选择查询找不到行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884372/