MySQL从一个字段中选择多个值

时间:2014-01-13 17:37:43

标签: mysql

不确定这是否可行,但我有这样的架构:

id | user_id | thread_id 
1  | 1       | 1
2  | 4       | 1
3  | 1       | 2
4  | 3       | 2

我正在尝试检索其中user_id = 1和4的thread_id。我知道in(1,4)不符合我的需求,因为它几乎是OR并且还会提取记录3并{ {1}}只返回一个bool。

2 个答案:

答案 0 :(得分:0)

尝试使用join,我猜你需要做的操作与user_id必须是4和1然后

SELECT 
  t1.thread_id  
FROM
  TABLE t1 
  JOIN TABLE t2 
    ON (t1.user_id = t2.user_id) 
WHERE t1.user_id = 1 
  AND t2.user_id = 4 

答案 1 :(得分:0)

您可以使用JOIN(该答案已存在)或HAVING,如下所示:

SELECT 
  thread_id, 
  COUNT(1) AS user_count 
FROM 
  t 
WHERE 
  user_id IN (1,4) 
GROUP BY
  thread_id
HAVING
  user_count=2

- 检查demoHAVING会更好地适应多个身份证明(因为JOIN你需要加入的身份数量是你所拥有的身份的数量)。但是,这有点棘手:只有当您的记录按=唯一时,您才可以(user_id, thread_id)进行比较。例如,您的user_id可以重复,然后使用>=,就像在此demo中一样。