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