mysql left join 多个 count 问题

2015-04-29 13:11:11 +08:00
 anai1943

SQL语句如下(#代表*)

SELECT
d.#,
ld.#,
count(ld.id) AS count_1,
count(v.view_user_id) AS count_2
FROM ly_sem_data AS d
LEFT JOIN ly_data AS ld ON d.pc_key = ld.pc_key
LEFT JOIN ly_vcard AS v ON ld.view_user_id = v.view_user_id
WHERE
d.pc_key != ''
AND ld.pc_key != ''
GROUP BY
d.pc_key

是这样的,用left join 链接两张表查询,统计后两张表的记录总数,用这种写法。查询出来的结果,count_1 和 count_2的值是一样的,实际数据这两个是不同的,怎么处理这种情况,多个count

3901 次点击
所在节点    MySQL
3 条回复
msg7086
2015-04-29 16:17:48 +08:00
看到这个帖子,我首先有这么些问题:
1. 你的表结构是怎么样的?
2. 你的目的是什么?
3. 你期望的结果是多少?实际结果是多少?
4. 你知道LEFT JOIN是怎么用的吗?
5. 你知道GROUP是怎么用的吗?
6. 你知道COUNT(COLUMN)是怎么用的吗?
whiteblack
2015-04-29 17:40:00 +08:00
那什么。。。这个执行的过程是先进行join连接,如果有多个join 则先进行前面一个,然后拿join的结果去执行后面的join,当所有join执行完毕后,然后拿着最后的结果集去select where ,所以你在select 里面count的都是“所有join执行完毕之后的结果集”,所以count的结果当然一样了
anai1943
2015-04-29 18:03:12 +08:00
@xiaobaigsy 已经解决了,在第一个select里面加上一个select,这样写行么,测试效率还行。
(
SELECT
COUNT(id)
FROM
ly_data
WHERE
....
) AS count_1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/187216

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX