具有内连接和不同值的SQL计数

时间:2014-08-14 11:24:24

标签: mysql sql

我正在处理一个查询,我想从多个表中返回行,这些行必须是不同的。虽然我只想要返回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'

这个计算回复中有多少行并且只返回一行。但它必须是具有克劳斯: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'

有一个答案,但它并没有完全返回我需要的东西,我需要从用户评论过的警报中计算所有答复,而不仅仅是计算用户评论该警报的次数。

有人能指出我正确的方向吗?或者提供答案? THX。

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

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条款中加入什么。