与多个值相比,如何返回多行?

时间:2012-01-09 15:52:12

标签: mysql database

所以我目前的表格如下:

  |  UserID  |  QuestionID  |  GameID  |
  |  1       |  30          |  2       |
  |  1       |  30          |  3       |
  |  2       |  30          |  4       |
  |  3       |  30          |  2       |
  |  4       |  30          |  3       |

如何返回相同UserID具有GameID 1,2,3和4值的所有行?基本上试图返回所有玩过游戏1,2,3和4的用户

4 个答案:

答案 0 :(得分:4)

假设没有重复的游戏ID ..

Select userID 
from table 
where gameID in (1,2,3,4) 
group by UserID
having count(GameID) = 4

答案 1 :(得分:0)

如果我得到的答案是正确的,那可能是:

SELECT p.* FROM poll AS p WHERE p.UserID = <your_user_id> AND p.GameID IN (1,2,3,4)

或者您正在寻找:

SELECT p.*, GROUP_CONCAT(p.GameID) FROM poll AS p WHERE p.UserID = <user_id> GROUP BY p.GameID

答案 2 :(得分:0)

假设表已规范化并正确连接,只需使用WHERE子句:

WHERE colname = value1 OR colname = value2 ...

或使用In运算符

WHERE colname = In (value,value...)

http://beginner-sql-tutorial.com/sql-logical-operators.htm

答案 3 :(得分:0)

SELECT
  UserID
FROM (
  SELECT
    UserID,
    GROUP_CONCAT(GameID ORDER BY GameID) as Games
  FROM some_table
  GROUP BY UserID
) AS baseview
WHERE Games="1,2,3,4"

请理解,这是一个性能杀手 - 它为所有用户创建了GROUP_CONCAT。