基本上,我有这个查询
SELECT p.*, total, active_total
FROM proxies p
LEFT JOIN
(SELECT proxy_id, COUNT(*) as total
FROM creator_log
GROUP BY proxy_id) p2
ON p.proxy_id = p2.proxy_id
JOIN
(SELECT proxy_id, COUNT(*) as active_total
FROM accounts
WHERE status = 1) p3
ON p.proxy_id = p3.proxy_id
WHERE
p.proxy_status = '1'
ORDER BY
p2.proxy_id DESC
LIMIT 1
active_total
的值返回我的 accounts
表中的总行数,它应该找到返回了 proxy_id
的帐户从 LEFT JOIN
结果,
知道为什么它的表现很奇怪吗?
最佳答案
假设您的帐户表有以下条目
proxy_id | field1
1 some_value
2 some_value
3 some_value
4 some_value
并查询
SELECT proxy_id, COUNT(*) as active_total
FROM accounts
WHERE status = 1
结果
proxy_id | active_total
1 4
所以当左连接时,你的预期结果将不会得到。它只结果总记录
试试这个
SELECT p.*, total, active_total
FROM proxies p
LEFT JOIN
(SELECT proxy_id, COUNT(*) as total
FROM creator_log
GROUP BY proxy_id) p2
ON p.proxy_id = p2.proxy_id
JOIN
(SELECT proxy_id, COUNT(proxy_id) as active_total
FROM accounts
WHERE status = 1
GROUP BY proxy_id ) p3
ON p.proxy_id = p3.proxy_id
WHERE
p.proxy_status = '1'
ORDER BY
p2.proxy_id DESC
LIMIT 1
关于mysql - SQL 结果返回总行数而不是指定行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20580435/