Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/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 ORDER BY在查询中不起作用_Mysql_Sql Order By - Fatal编程技术网

Mysql ORDER BY在查询中不起作用

Mysql ORDER BY在查询中不起作用,mysql,sql-order-by,Mysql,Sql Order By,我有一个查询来获取group by和order by的状态。我得到的结果是分组的,但不是按顺序的。你能帮忙吗 这是我的问题 ( SELECT v.STATUS, COUNT(v.STATUS) AS COUNT FROM mdl_ctx_voucher v WHERE MONTH(FROM_UNIXTIME(v.timecreated)) = MONTH(CURDATE()) AND MONTH(FROM_UNIXTIME(v.timemodified)) = MONTH(CURDATE())

我有一个查询来获取group by和order by的状态。我得到的结果是分组的,但不是按顺序的。你能帮忙吗

这是我的问题

(
SELECT v.STATUS, COUNT(v.STATUS) AS COUNT
FROM mdl_ctx_voucher v
WHERE 
MONTH(FROM_UNIXTIME(v.timecreated)) = MONTH(CURDATE()) AND
MONTH(FROM_UNIXTIME(v.timemodified)) = MONTH(CURDATE()) AND 
YEAR(FROM_UNIXTIME(v.timecreated)) = YEAR(CURDATE()) AND 
YEAR(FROM_UNIXTIME(v.timemodified)) = YEAR(CURDATE())
GROUP BY v.STATUS ORDER BY v.`status` DESC
)
UNION
(
SELECT DISTINCT(STATUS),0 as count
FROM mdl_ctx_voucher
WHERE STATUS NOT IN (
SELECT mainQuery.status
FROM 
(
SELECT COUNT(v.STATUS) AS COUNT, v.STATUS
FROM mdl_ctx_voucher v
WHERE 
MONTH(FROM_UNIXTIME(v.timecreated)) = MONTH(CURDATE()) 
AND MONTH(FROM_UNIXTIME(v.timemodified)) = MONTH(CURDATE()) 
AND YEAR(FROM_UNIXTIME(v.timecreated)) = YEAR(CURDATE()) 
AND YEAR(FROM_UNIXTIME(v.timemodified)) = YEAR(CURDATE())
GROUP BY v.STATUS ORDER BY v.`status` DESC
)mainQuery) ORDER BY v.`status` DESC
)
我得到了这个结果,没有命令

"10"    "0"
"30"    "0"
"20"    "0"
"50"    "0"
"40"    "0"
NULL    "0"
"90"    "0"
"60"    "0"

我想按状态对结果进行排序。

在末尾添加
orderby
。而不是影响整个结果。在您的代码中,它只影响
联合的第二部分

select Status, Count from (
SELECT v.STATUS, COUNT(v.STATUS) AS COUNT
FROM mdl_ctx_voucher v
WHERE 
MONTH(FROM_UNIXTIME(v.timecreated)) = MONTH(CURDATE()) AND
MONTH(FROM_UNIXTIME(v.timemodified)) = MONTH(CURDATE()) AND 
YEAR(FROM_UNIXTIME(v.timecreated)) = YEAR(CURDATE()) AND 
YEAR(FROM_UNIXTIME(v.timemodified)) = YEAR(CURDATE())
GROUP BY v.STATUS 
)
UNION
(
SELECT DISTINCT(STATUS),0 as count
FROM mdl_ctx_voucher
WHERE STATUS NOT IN (
SELECT mainQuery.status
FROM 
(
SELECT COUNT(v.STATUS) AS COUNT, v.STATUS
FROM mdl_ctx_voucher v
WHERE 
MONTH(FROM_UNIXTIME(v.timecreated)) = MONTH(CURDATE()) 
AND MONTH(FROM_UNIXTIME(v.timemodified)) = MONTH(CURDATE()) 
AND YEAR(FROM_UNIXTIME(v.timecreated)) = YEAR(CURDATE()) 
AND YEAR(FROM_UNIXTIME(v.timemodified)) = YEAR(CURDATE())
GROUP BY v.STATUS 
)mainQuery) 
)ORDER BY status DESC

一开始他可能还需要一个
SELECT*FROM
,不是吗?@Jens谢谢。工作很好。但是一个小问题。如何从同一查询中获取id。@柴坦尼亚您可以尝试将
组\u concat(id)
添加到select子句中。不需要将联合包装到子查询中,就可以对整个结果集进行排序