我目前正在处理一个查询,我想从多个表中返回行,这些行需要不同。但是,虽然我只想返回 1 个不同的行,但我还想知道有多少行而不必执行另一个查询,这就是我到目前为止得到的结果:
SELECT DISTINCT a.title,
a.lat,
a.lon,
a.alert_content_id,
a.date_added,
count(*)
FROM `reply` r
INNER JOIN `alerts` a ON r.alert_id=a.alerts
WHERE `user` = '1'
这个计算回复中有多少行并且只返回一行。但它必须是具有此 where 子句的行:r.alert_id=a.alerts
这会返回所有行,但会漏掉每一行的计数
SELECT DISTINCT a.title,
a.lat,
a.lon,
a.alert_content_id,
a.date_added
FROM `reply` r
INNER JOIN `alerts` a ON r.alert_id=a.alerts
WHERE `user` = '1'
有一个答案,但它没有完全返回我需要的东西,我需要计算用户评论的警报中的所有回复,而不仅仅是计算用户对该警报评论的次数。
有人能指出我正确的方向吗?或者给出答案?谢谢。
最佳答案
这是你想要的吗?
SELECT a.title,
a.lat,
a.lon,
a.alert_content_id,
a.date_added,
count(*)
FROM `reply` r INNER JOIN
`alerts` a
ON r.alert_id = a.alerts
WHERE `user` = '1'
GROUP BY a.title, a.lat, a.lon, a.alert_content_id, a.date_added;
您的问题的答案是您不想使用select distinct
。您想要使用 group by
进行聚合查询。只是不清楚您想将什么放入 group by
子句。
关于mysql - 具有内部连接和不同值的 SQL 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25306890/