0

我有一个表有两列 trial_id , category_id

我正在附加图像,以便它变得更清晰。

我想要 category_id 为 260,2880 的 trial_id 的记录。

好的,我可以使用“in”语句运行查询

“SELECT * FROM trial_categoryWHERE category_id IN (260, 2880)”在此处输入图像描述

它给 trial_id 为 73,213 但 73 有很多其他类别。所以这不应该显示在结果中。

结果应该只包含 213 trial_id 甚至我在 213 中添加另一个 category_id 然后 213 不应该显示。

谢谢

4

3 回答 3

1

如果我做对了,您只需要仅包含 260 或 2880 的 trial_id(两者都包含?)

SELECT * 
   FROM trial_category 
   WHERE category_id IN (260, 2880)
   and trial_id NOT IN (select trial_id 
                         from trial_category 
                         where category_id NOT IN (260, 2880))
于 2013-07-05T07:58:53.090 回答
0
 SELECT x.* 
   FROM trial_category x
   LEFT
   JOIN trial_category y
     ON y.trial_id = x.trial_id
    AND y.category_id NOT IN(260,2880)
  WHERE x.category_id IN (260,2880)
    AND y.id IS NULL;

?

于 2013-07-05T08:50:33.703 回答
0

尝试这个:

SELECT 
    * 
FROM 
    trial_category 
WHERE 
    category_id IN ( 260, 2880 ) 
    AND trial_id=213

这将trial_id只为您提供这 2 个类别:

SELECT 
    trial_id 
FROM 
    trial_category 
GROUP BY
    trial_id
HAVING
    GROUP_CONCAT( DISTINCT category_id ORDER BY category_id) = '260,2880'
于 2013-07-05T07:50:10.640 回答