所以我目前的表格如下:
| 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的用户
答案 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...)
答案 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。