这两个查询是否有可能产生不同的结果?有没有一个首选?
SELECT COUNT(DISTINCT a.id, b.id) AS `count`
FROM a
JOIN b ON a.id = b.a_id
VS
SELECT COUNT(*) AS `count`
FROM (SELECT TRUE
FROM a
JOIN b ON a.id = b.a_id
GROUP BY a.id, b.id) g
对我来说,COUNT(DISTINCT)
似乎是首选,因为你没有处理子查询。我只是不知道是否有任何陷阱。也许与nulls有关?
我不确定它是否有所作为,但我是专门针对我的用例询问MySQL。