0

问题是我有一个表,其中用户有某些“活动”选项这是该表的表示:

USER | OPTION
-------------
1    | A
1    | B
1    | C
2    | A
2    | D
2    | E
3    | A
3    | D
3    | M

假设我们只想选择同时具有AAND选项的D用户(在本例中为用户 2 和 3)。

我曾想过类似 nested 的东西SELECT,但我想要一些可以用循环构建的东西,实际上OPTION将有大约 40 个不同的值,并且这个查询应该用页面上的表单构建。

有任何想法吗?不幸的是,数据库“是这样完成的”并且无法更改(可以进行细微更改,例如添加另一个字段,但我无法更改背后的逻辑)

4

1 回答 1

4

仅选择同时具有选项 A 和 D 的用户

它被称为关系划分,这是一种方法:

SELECT `user`
FROM tablename 
WHERE `option` in ('A', 'D')
GROUP BY `user`
HAVING COUNT(DISTINCT `option`) = 2;

在这里查看它的实际效果:

于 2013-05-20T14:12:29.817 回答