我有一个查询如下:(显示的是一个带有电视节目和IMDB ID的表,而recommended_titles是一个包含两列IMDB_ID的表)
Select t2.* from shows t, shows t2, recommended_titles WHERE
t.imdb_id = recommended_titles. title_id_1
AND recommended_titles.title_id_2=t2.imdb_id
AND t.imdb_id = 0367279 LIMIT 7
查询很好,但我意识到只有在第一列中检查我的imdb id时它才会出现在我的第二列中。 所以我尝试添加以下内容:
OR
recommended_titles.title_id_2=t.imdb_id
AND t.imdb_id = recommended_titles. title_id_1
AND t.imdb_id = 0367279 LIMIT 7
但显然OR不能与AND一起使用,
有关我应该怎么做的任何建议?
编辑: 为了解释我正在尝试做什么,这里有一个简单的例子,以防我上面的解释太混乱了。 表格显示有这样的行:
name of a tv show | 00001
name of another | 00002
name of another | 00003
表推荐标题有(注意ID可以在任一列中)
00001 | 00002
00002 | 00003
答案 0 :(得分:8)
您可以在mysql中查看operator precedence(并查看AND
的优先级高于OR
),或使用括号(更容易使用和维护)
(t.imdb_id = recommended_titles.title_id_1 OR
recommended_titles.title_id_2=t.imdb_id)
AND recommended_titles.title_id_2=t2.imdb_id
AND t.imdb_id = 0367279 LIMIT 7
答案 1 :(得分:0)
这样做,
(recommended_titles.title_id_2=t.imdb_id
OR t.imdb_id = recommended_titles. title_id_1)
AND t.imdb_id = 0367279 LIMIT 7
答案 2 :(得分:0)
(t.imdb_id = recommended_titles. title_id_1
OR recommended_titles.title_id_2=t.imdb_id )
AND t.imdb_id = 0367279 LIMIT 7
只需使用括号将您的条件分组为优先级。