mysql - SQL 结果返回总行数而不是指定行数

标签 mysql sql

基本上,我有这个查询

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/

相关文章:

sql - 选择一列中相同但另一列中不同的行

SQL 合并行并创建列

sql - 在 SQLite 中添加与添加列?

mysql - 如何替换mysql字符串中的特殊字符

mysql - ElasticSearch 和 jdbc - 映射、分析器、过滤器设置

mysql - 简单的mysql更新查询有时很慢

SQL Oracle 继承关系数据库

php - 如何插入 3 个 php 数组值作为 3 个 MYSQL 列

c# - 使用 MySQL Connector for .net 打开 MySQL 连接非常慢

sql - ASP.NET MVC : Execute Razor from DB String?