首页 > 解决方案 > MySQL 使用 if 语句选择 COUNT(*)

问题描述

我有 1 个有很多记录的表,我想分离COUNT(*)值(利润/损失),我可以用 2 个 MySQL 查询来做到这一点,但我只想用 1 个查询来做到这一点,这可能吗?

$query_string = '
        SELECT 
            MONTH(order_time) AS month,
            CASE WHEN order_profit > 0 THEN COUNT(*) END AS profit,
            CASE WHEN order_profit < 0 THEN COUNT(*) END AS loss,
            COUNT(*) AS total
        FROM
            trade_histories
    ';
$query_string .= '
        WHERE
            order_profit IS NOT NULL
    ';
$query_string .= '
        GROUP BY
            MONTH(order_time) 
    ';

这是我迄今为止尝试过的,这就是结果

stdClass Object ( [month] => 1 [profit] => 447 [loss] => [total] => 447 ) 
stdClass Object ( [month] => 2 [profit] => 1153 [loss] => [total] => 1153 ) 
stdClass Object ( [month] => 3 [profit] => 898 [loss] => [total] => 898 ) 
stdClass Object ( [month] => 4 [profit] => [loss] => 640 [total] => 640 ) 
stdClass Object ( [month] => 12 [profit] => [loss] => 2 [total] => 2 ) 

标签: mysql

解决方案


推荐阅读