mariadb 计算在列B AND列C中同时具有特定值的唯一列A条目的数量

eh57zj3b  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(130)

我有一个包含三列的SQL表:标识、物料、变量。

*ID是唯一的用户ID(例如“12345”)。
*项目是特定设置参数的编号项目(例如,“通知”首选项为“20”;和“150”用于颜色主题)。
*变量是用户对上述设置的选项(例如,“0”表示无通知;"1“表示暗)。

我想了解有多少用户拥有两对设置。例如,有多少用户拥有:Notifications: Off AND Color Mode: Dark。或者在数据库中显示为:20 = '0' AND 150 = '1' .
我可以单独运行以下命令,以获得拥有通知的用户数量:关闭,以及有多少用户使用颜色主题:黑暗。
通知关闭:

SELECT COUNT(*) FROM `settings` WHERE item = '20' AND variable = '0'

暗模式开启

SELECT COUNT(*) FROM `settings` WHERE item = '150' AND variable = '1'

但是,我如何才能知道有多少用户同时拥有两种通知:关闭和颜色主题:深色(项目20 =“0”且项目150 =“1”)?
因此在下表中,我希望我的结果是“2”,因为用户78和用户81都有项目20 = 0和项目150 = 1。
| 标识符|项目|可变的|
| - -|- -|- -|
| 七十八年|二十|第0页|
| 七十八年|一百五十|1|
| 七十九|20个|一个|
| 七十九|一百五十个|一个|
| 八十个|20个|一个|
| 八十个|一百五十个|第0页|
| 八十一年|二十|第0页|
| 八十一年|一百五十|1|

omhiaaxx

omhiaaxx1#

根据您的示例数据,并假设用户可以对每个项目使用一行,您可以执行以下操作

select count (*) from (
    select id
    from t
    where (item=20 and variable = 0) or (item = 150 and variable = 1)
    group by id
    having Count(*) = 2
)t;

相关问题