mysql - 从出现的表中计数记录是一个而不是其他 : MYSQL

标签 mysql select inner-join

我有两个简单的表

用户

+----+--------+-----------+
| id | gender | birthdate |
+----+--------+-----------+

用户偏好

+----+------------------+-----------------+
| id | preference value | preference type |
+----+------------------+-----------------+

问题:

我想查询所有没有列出特定偏好值(例如“购物”)的人。这包括所有没有列出任何偏好类型的人,因此该列可能为空,但是由于用户偏好的列“id”将用户作为外键引用,我还想在我的计数中包括所有未出现在第二个表中的人(用户偏好)?

没有将“购物”作为偏好值的人的总数:

这是我尝试过的:

SELECT
(
SELECT COUNT(DISTINCT userpreference.id) FROM userpreference
WHERE  preferencevalue != 'shopping')
+
(
SELECT COUNT(users.id)
FROM users
WHERE users.id NOT IN
(SELECT userpreference.Id
FROM userpreference )
)
AS'Total'

最佳答案

Select Count(*)
From Users
Where Not Exists   (
                    Select 1
                    From UserPreference As UP1
                    Where UP1.id = Users.id
                        And UP1.PreferenceValue = 'Shopping'
                    )

关于mysql - 从出现的表中计数记录是一个而不是其他 : MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188774/

相关文章:

Mysql 多个同时插入查询

php - 如何处理可能有重复条目的 PDO 事务

mysql - 如何在mysql中实现Microsoft Excel百分位数函数

mysql - 从 SELECT 查询更改为 DELETE 查询

php - Mysql安全查询php

css - 如何删除选择上的默认值

javascript - 如何在jQuery中选择HTML5数据属性?

mysql - MySQL 中的 JOIN 查询产生错误的结果

mysql - 左连接或类似查询

mysql - 来自多个 JOINed 表 MSSQL 的 SUM