Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 don';t在结果中显示变量_Mysql - Fatal编程技术网

Mysql don';t在结果中显示变量

Mysql don';t在结果中显示变量,mysql,Mysql,我正在尝试优化此选择,因为如果相同的选择和查询需要两次运行时间,那么: SELECT sc.ID, (CASE WHEN (SELECT SUM(scu.OK) FROM `SCU` scu WHERE scu.ID = _ID AND scu.CCC = sc.ID GROUP BY scu.ISC)

我正在尝试优化此选择,因为如果相同的选择和查询需要两次运行时间,那么:

SELECT sc.ID, 
      (CASE WHEN (SELECT SUM(scu.OK) 
                    FROM `SCU` scu 
                    WHERE scu.ID = _ID
                        AND scu.CCC = sc.ID
                    GROUP BY scu.ISC)
       IS NULL THEN 0 ELSE 
                    (SELECT SUM(scu.OK) 
                    FROM `SCU` scu 
                        WHERE scu.ID = _ID
                            AND scu.CCC = sc.ID
                        GROUP BY scu.ISC)
      END )as 'STATUS'
FROM    ( SELECT `ID` 
            FROM `STORE`
            WHERE `STATE`=1
            ORDER BY `NUMBERIN` DESC) sc
GROUP BY sc.ID;
我试过这样的东西

SELECT sc.ID, 
       @STATUS:=(SELECT SUM(scu.OK) 
                    FROM `SCU` scu 
                    WHERE scu.ID = _ID
                        AND scu.CCC = sc.ID
                    GROUP BY scu.ISC),
      (CASE WHEN @STATUS
       IS NULL THEN 0 ELSE @STATUS
       END ) as 'STATUS'
FROM    ( SELECT `ID` 
            FROM `STORE`
            WHERE `STATE`=1
            ORDER BY `NUMBERIN` DESC) sc
GROUP BY sc.ID;
但它会返回另一列,其中包含@STATUS变量,但它不应该返回。
结果应具有ID和状态列。有什么想法吗?

最简单的方法是合并,它可以用来用特定的值替换空值

SELECT sc.ID, 
      COALESCE((SELECT SUM(scu.OK) 
                    FROM `SCU` scu 
                    WHERE scu.ID = _ID
                        AND scu.CCC = sc.ID
                    GROUP BY scu.ISC),0) as 'STATUS'      
FROM    ( SELECT `ID` 
            FROM `STORE`
            WHERE `STATE`=1
            ORDER BY `NUMBERIN` DESC) sc
GROUP BY sc.ID;


我认为您可以使用
IFNULL
执行以下操作:

SELECT sc.ID, 
       IFNULL(@STATUS:=(SELECT SUM(scu.OK) 
                    FROM `SCU` scu 
                    WHERE scu.ID = _ID
                        AND scu.CCC = sc.ID
                    GROUP BY scu.ISC),0,@STATUS) AS `STATUS`
FROM    ( SELECT `ID` 
            FROM `STORE`
            WHERE `STATE`=1
            ORDER BY `NUMBERIN` DESC) sc
GROUP BY sc.ID;
这个怎么样

Select 
id, 
      (CASE WHEN status
       IS NULL THEN 0 ELSE status
       END ) as 'STATUS'
from
(SELECT sc.ID, 
       (SELECT SUM(scu.OK) 
                    FROM `SCU` scu 
                    WHERE scu.ID = _ID
                        AND scu.CCC = sc.ID
                    GROUP BY scu.ISC) as status
FROM    ( SELECT `ID` 
            FROM `STORE`
            WHERE `STATE`=1
            ORDER BY `NUMBERIN` DESC) sc
GROUP BY sc.ID) temp
对不起,我在智能手机上输入的。
希望它比IFNULL更有用。