今天做了一个需求,然后自测的时候发现实际条数与count条数不一致,count条数明显要多,然后查了一下自己写的sql,明显查询数据的sql与count数据的sql一样为啥不一致呢,原因是distinct过滤叼重复条数,而count不会的,如下这种写法错误,虽然看起来没问题
SELECT DISTINCT COUNT(*)
FROM
USER a
LEFT JOIN user_action_statistics b ON a.row_id = b.quantum_user_id
LEFT JOIN (
SELECT
count(1) AS dayCount,
c.quantum_user_id
FROM
USER b,
user_action_statistics c
WHERE
b.row_id = c.quantum_user_id
) d ON a.row_id = d.quantum_user_id
ORDER BY
a.update_time DESC
在这里插入代码片
这样写不会过滤掉重复的条数,
然后正确写法如下,当然可能还有其他写法 我只展示一下我写的
SELECT
count(DISTINCT(a.row_id))
FROM
USER a
LEFT JOIN user_action_statistics b ON a.row_id = b.quantum_user_id
LEFT JOIN (
SELECT
count(1) AS dayCount,
c.quantum_user_id
FROM
USER b,
user_action_statistics c
WHERE
b.row_id = c.quantum_user_id
) d ON a.row_id = d.quantum_user_id
这样就完美解决了