SQL Query根据表中的2条记录从1个表中获取记录

时间:2012-03-01 05:02:10

标签: mysql sql

我必须编写一个查询,它将显示前25个特定类型的game_id。 数据库表就像

| id | genre_id | game_id | is_primary |
----------------------------------------
  1    6000       12345      0
  2    6007       12345      1
  3    6000       23492      0
  4    6007       82837      1
----------------------------------------

在这里你可以看到记录1和2对于is_primary = 0和1都有相同的game_id。我要做的是执行一个同时包含genre_id的查询,我必须获取同时属于两者的game_id 。表示game_id,其中6000作为genre_id,is_primary = 0,6007作为genre_id,is_primary = 1.

在网上搜索但没有成功。

我试过了这个查询

 SELECT game_id FROM table_name WHERE 
(SELECT game_id FROM table_name WHERE genre_id=6000 AND is_primary=0) 
AND ganre_id=6007 AND is_primary=1;

但是此查询错误为Subquery returns more than one value

2 个答案:

答案 0 :(得分:1)

尝试此查询(已更新)

SELECT game_id FROM table_name WHERE game_id IN(SELECT game_id FROM table_name WHERE genre_id=6000 AND is_primary=0)
 AND ( ganre_id=6007 AND is_primary=1);

答案 1 :(得分:1)

JOIN performs much better than subqueries

SELECT t1.game_id
FROM table_name t1
JOIN table_name t2 ON (t1.game_id = t2.game_id AND t2.genre_id = 6000 AND t2.is_primary = 0)
WHERE (t1.genre_id = 6007 AND t1.is_primary = 1)