我有一个多对多的关系
--------------------
| user_id | name |
--------------------
| 1 | user1 |
--------------------
| 2 | user2 |
--------------------
| 3 | user3 |
--------------------
--------------------
| type_id | name |
--------------------
| 1 | type1 |
--------------------
| 2 | type2 |
--------------------
| 3 | type3 |
--------------------
---------------------
| user_id | type_id |
---------------------
| 1 | 1 |
---------------------
| 1 | 2 |
---------------------
| 1 | 3 |
---------------------
| 2 | 1 |
---------------------
| 2 | 2 |
---------------------
| 3 | 3 |
---------------------
我正在尝试构建一个查询,以便如果我的用户属于 3 类,则根本不返回该用户。到目前为止,我有一个查询排除了类型 3 的用户,但如果其他类型也分配给他们,则它们将被返回。
SELECT COUNT(DISTINCT `t`.`user_id`)
FROM `user` `t`
LEFT OUTER JOIN `type` `type_type` ON (`t`.`user_id`=`type_type`.`user_id`)
LEFT OUTER JOIN `type` `type` ON (`type`.`type_id`=`type_type`.`type_id`)
WHERE ((type.type_ids NOT IN (3));
上面的查询仍然会返回user_id 1
,因为该用户被分配了多种类型,我如何消除类型 3 的用户,无论他们被分配了多少其他类型?