Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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中的ORDERBY子句,我的查询无法工作_Mysql_Mysqli - Fatal编程技术网

由于mysql中的ORDERBY子句,我的查询无法工作

由于mysql中的ORDERBY子句,我的查询无法工作,mysql,mysqli,Mysql,Mysqli,我正在编写用于显示数据的查询,并在该查询中添加了ORDERBY子句。 我的问题是 SELECT * FROM `coupons` WHERE `status` = 'A' && `type` = '2' && `time` > CURDATE() && `start_date` <= CURDATE() order by `stocks` asc 在上面的查询中,它按“stocks”排序,但在某些情况下stocks为零

我正在编写用于显示数据的查询,并在该查询中添加了ORDERBY子句。 我的问题是

SELECT * FROM `coupons` 
WHERE `status` = 'A' &&  `type` = '2'    
&&  `time` > CURDATE() && `start_date` <= CURDATE()
order by `stocks` asc 
在上面的查询中,它按“stocks”排序,但在某些情况下stocks为零,这种情况下,我希望在最后显示这一行。 我该怎么办请帮忙。提前谢谢

SELECT *, (if(`stocks` != 0,`stocks`,"")) as newstocks FROM `coupons` 
WHERE `status` = 'A' &&  `type` = '2'    
&&  `time` > CURDATE() && `start_date` <= CURDATE()
order by newstocks asc 

使用上述代码。

默认情况下,它是asc,因此您不必提及它。试试下面这个

order by CASE WHEN `stocks` = 0 THEN 1 ELSE 0 END asc , `stocks` asc 

从优惠券中选择*,其中status='A'&&type='2'&&time>CURDATE&&start\u date是我脑海中最简单的方法,完全在MySQL中:创建一个存储函数,如果非零,则返回传递给它的值,如果为零,则返回可能的最高值。或者,类似于当stocks=0时的order-by-case,然后2000000000其他stocks在查询中结束。但是呢。