计算相同和不同的值
Count same AND different values
在餐厅,一群朋友(每个人都有自己的user_id
)吃了两件或更多东西(每个人都有自己的item_id
)。
数据库中保存了谁(user_id
)吃了什么(item_id
)。
我怎样才能只找到谁 (user_id
) 吃了不同的东西 (item_id
)?
换句话说,我想从结果中排除那些吃了两次同样的东西的人。
下面的查询显示谁吃过不止一种东西,但不排除那些吃过两次同样东西的人(我不在乎):
SELECT
`user_id`, DATE(date), `item_id`, COUNT(*)
FROM `restaurant`
GROUP BY
`user_id`, DATE(date)
HAVING
COUNT(*) > 1
谢谢
COUNT(*)
计算每组 user_id
和 DATE(date)
的每一行。
如果你想让它只计算不同的 item_id
s 你需要关键字 DISTINCT
:
SELECT user_id, DATE(date),
COUNT(DISTINCT item_id)
FROM restaurant
GROUP BY user_id, DATE(date)
HAVING COUNT(DISTINCT item_id) > 1;
请注意 item_id
在 SELECT
列表中没有意义。
在餐厅,一群朋友(每个人都有自己的user_id
)吃了两件或更多东西(每个人都有自己的item_id
)。
数据库中保存了谁(user_id
)吃了什么(item_id
)。
我怎样才能只找到谁 (user_id
) 吃了不同的东西 (item_id
)?
换句话说,我想从结果中排除那些吃了两次同样的东西的人。
下面的查询显示谁吃过不止一种东西,但不排除那些吃过两次同样东西的人(我不在乎):
SELECT
`user_id`, DATE(date), `item_id`, COUNT(*)
FROM `restaurant`
GROUP BY
`user_id`, DATE(date)
HAVING
COUNT(*) > 1
谢谢
COUNT(*)
计算每组 user_id
和 DATE(date)
的每一行。
如果你想让它只计算不同的 item_id
s 你需要关键字 DISTINCT
:
SELECT user_id, DATE(date),
COUNT(DISTINCT item_id)
FROM restaurant
GROUP BY user_id, DATE(date)
HAVING COUNT(DISTINCT item_id) > 1;
请注意 item_id
在 SELECT
列表中没有意义。