Mysql清除代码在一行中

时间:2018-06-18 11:27:41

标签: mysql sql

我正在google和stackoverflow.com上搜索我怎样才能清楚地写出这段代码,但一无所获。 任何的想法?

MySQL查询:

SELECT COUNT(*) AS `allInvoice`,
    (SELECT COUNT(*) FROM `ocr_entity` WHERE `status` = 0) AS `new`,
    (SELECT COUNT(*) FROM `ocr_entity` WHERE `status` = 10) AS `notTemplate`,
    (SELECT COUNT(*) FROM `ocr_entity` WHERE `status` = 50) AS `withMistake`,
    (SELECT COUNT(*) FROM `ocr_entity` WHERE `status` = 100) AS `finished`,
    (SELECT COUNT(*) FROM `ocr_entity` WHERE `status` = 200) AS `skipped`  
    FROM `ocr_entity`;

1 个答案:

答案 0 :(得分:6)

使用条件聚合:

SELECT COUNT(*) AS `allInvoice`,
       SUM( `status` = 0 ) AS `new`,
       SUM( `status` = 10 ) AS `notTemplate`,
       SUM( `status` = 50 ) AS `withMistake`,
       SUM( `status` = 100 ) AS `finished`,
       SUM( `status` = 200 ) AS `skipped`  
FROM `ocr_entity`;

MySQL将布尔值视为数字上下文中的数字,0表示false,1表示true(这就是SUM()工作的原因)。