3

我有一个查询如下:(节目是一个带有电视节目和 IMDB ID 的表,推荐的标题是一个有两列和 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
4

3 回答 3

8

您可以查看 mysql 中的运算符优先级(并看到它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
于 2013-06-07T08:34:52.607 回答
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
于 2013-06-07T08:37:15.393 回答
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

只需使用括号将您的条件分组为优先级。

于 2013-06-07T08:41:53.497 回答