我有两个简单的表
用户
+----+--------+-----------+
| 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/