标题可能令人困惑,不太清楚怎么说。这就是我需要做的。我有两张桌子,cronjobs和cronjob_seeds。在将数据库添加到数据库之前,我需要查看是否存在cronjob。
考虑以下表格:
cronjobs:
-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
我错过了什么吗?我应该使用其他类型的加入吗?
而且,关于主题,但种子是回调方法的参数,我只是把它命名有点奇怪。
答案 0 :(得分:1)
您应该使用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')
答案 1 :(得分:0)
仅检查cron条目是否存在,您不需要加入,除非您需要检查它是否存在且具有特定种子。要仅检查是否存在cron条目,您需要执行以下操作:
SELECT `id`
FROM `cronjobs`
WHERE `cronjobs`.`callback_model` = 'movie_suggestion_model'
AND `cronjobs`.`callback_method` = 'fetch_similar_movies'
答案 2 :(得分:0)
即使_cronjob_seeds_只有一行,查询如何返回结果。导致最后两个AND标准相互冲突。你应该修改为:
AND `cronjob_seeds`.`seed` BETWEEN '1' AND '10'
您是否也在质疑cronjob_seed或cronjob中记录的存在?您的查询参数似乎不清楚。您是否正在尝试检查是否存在具有特定种子的特定cronjob?提示:尝试用人类语言编写查询而不是sql