2012-08-05 36 views
0

我有一个表像这样:MySQL和检查阵列组合存在(螺纹参与者)

| thread_id | user_id | 
+-----------+---------+ 
|  1  | 1 | 
|  1  | 2 | 
|  2  | 1 | 
|  2  | 3 | 
|  3  | 1 | 
|  3  | 3 | 
|  3  | 2 | 
      ... 

我将如何检查是否一个数组组合存在且属于同一个线程?

例:

1,3  => return true 
3,1,2 => return true 
1,4,2,3 => return false 

阵列可以包含几百个ID的,与数以百计的线程thounds的。

回答

1
SELECT NULL 
WHERE EXISTS (
      SELECT NULL 
      FROM  your_table 
      WHERE user_id IN (1,2,3,4,..., ...) 
      GROUP BY thread_id 
      HAVING COUNT(*) = n 
     ) 

其中n是列表/数组中项目的计数。

然后在你的脚本:

  • 如果返回的行:true
  • 否则:false
+0

数组列表中的项目,很好的数目。谢谢。 – Sparkup 2012-08-05 00:36:16