Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 简化此查询_Mysql - Fatal编程技术网

Mysql 简化此查询

Mysql 简化此查询,mysql,Mysql,你知道简化这个查询的方法吗? 认为您需要这样的用例语句: SELECT COUNT( sendbook.id ) AS total, SUM( sendbook.num ) AS num, ( SELECT COUNT( sendbook.id ) FROM sendbook INNER JOIN clients ON clients.id = sendbook.clientid WHERE sendbook.issueid = '29' AND clients.area >1000 A

你知道简化这个查询的方法吗?
认为

您需要这样的用例语句:

SELECT COUNT( sendbook.id ) AS total, SUM( sendbook.num ) AS num, (

SELECT COUNT( sendbook.id )
FROM sendbook
INNER JOIN clients ON clients.id = sendbook.clientid
WHERE sendbook.issueid = '29'
AND clients.area >1000
AND clients.area <2000
) AS area1000, (

SELECT COUNT( sendbook.id )
FROM sendbook
INNER JOIN clients ON clients.id = sendbook.clientid
WHERE sendbook.issueid = '29'
AND clients.area >2000
AND clients.area <3000
) AS area2000, (

SELECT COUNT( sendbook.id )
FROM sendbook
INNER JOIN clients ON clients.id = sendbook.clientid
WHERE sendbook.issueid = '29'
AND clients.area >3000
AND clients.area <4001
) AS area2000
FROM `sendbook`
WHERE sendbook.issueid = '29' 

total  num  area1000  area2000  area2000
 8      438      3         3        2

您的第二个“area2000”不应该命名为“area3000”吗?区域2000和3000会发生什么情况?您的查询中不考虑这些区域,对吗?您的案例是4行,但我的案例是1行是的,但这是一个非常简单的查询,您只需要运行一个小循环
SELECT  COUNT( sendbook.id ),
(CASE 
WHEN clients.area between '1000' and '2000'  THEN 1 
WHEN clients.area between '2000' and '3000'  THEN 2 
WHEN clients.area between '3000' and '4000'  THEN 3 
 END) AS myrange  FROM mytable 
GROUP BY myrange