Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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
Php 按名称的字母顺序对结果进行排序,最后显示为空的列图像_Php_Sql_Sql Server 2008 - Fatal编程技术网

Php 按名称的字母顺序对结果进行排序,最后显示为空的列图像

Php 按名称的字母顺序对结果进行排序,最后显示为空的列图像,php,sql,sql-server-2008,Php,Sql,Sql Server 2008,可能重复: 我需要使用MS SQL按以下方式对结果进行排序。它需要先按名称的字母顺序排列结果,然后按不为空的图像名称排列结果。图像为空的所有行都需要显示最后一行,图像不为空的所有行都应该按名称的字母顺序排在第一位 我从PHP调用MS Sql查询,它看起来与此类似 $sql = "SELECT * FROM products ORDER BY name AsC, image DESC"; 这是否可能以及如何实现?您可以使用CASE SELECT * FROM products ORDER B

可能重复:

我需要使用MS SQL按以下方式对结果进行排序。它需要先按名称的字母顺序排列结果,然后按不为空的图像名称排列结果。图像为空的所有行都需要显示最后一行,图像不为空的所有行都应该按名称的字母顺序排在第一位

我从PHP调用MS Sql查询,它看起来与此类似

$sql = "SELECT * FROM products ORDER BY name AsC, image DESC";

这是否可能以及如何实现?

您可以使用
CASE

SELECT * FROM products 
ORDER BY 
   name ASC, 
   CASE WHEN image IS NULL THEN 1 ELSE 0 END ASC,
   image ASC

您可以使用
CASE

SELECT * FROM products 
ORDER BY 
   name ASC, 
   CASE WHEN image IS NULL THEN 1 ELSE 0 END ASC,
   image ASC

我认为顺序应该是
case
name
然后
image
(首先是
case
,因为“图像为null的所有行都需要最后显示”)@CyberDude:No“它需要先按名称的字母顺序排序,然后按图像名称(不为null)排序…”他希望空图像是二阶组的最后一个。最高优先级有名称。是的,但问题的最后一部分表明空图像是一个例外,它们必须是最后一个。否则就没有多大意义了,因为空图像上的子句只会对相同的名称产生可见的效果(这不太可能)。如果所有名称都不同,则image子句无效。名称集合可能更倾向于“倾斜”不同的值。@Tim-经过一些调整,这个查询就做到了。我做了下面的操作,它按大小写顺序进行了操作,当image为NULL时,则为0,否则为1 END DESC,name ASC,imageDESC@Roland:
当图像为空时,则0其他1结束说明
与我的
相同。当图像为空时,则1其他0结束说明
。所以Cyberdude的假设是正确的。名称在顺序中没有最高优先级,而是图像。我的第一个理解是不同的:先按名称排序,然后按可为空的图像排序,其中记录的是图像=如果有多条记录具有相同的名称,则null首先出现。我认为顺序应该是
大小写
名称
,然后是
图像
大小写
),因为“图像为null的所有行都需要最后显示”)@CyberDude:否“它需要先按名称的字母顺序排列结果,然后按不为空的图像名称排序。。。“他希望空图像是二阶组的最后一个。最高优先级有名称。是的,但问题的最后一部分表明空图像是一个例外,它们必须是最后一个。否则就没有多大意义了,因为空图像上的子句只会对相同的名称产生可见的效果(这不太可能)。如果所有名称都不同,则image子句无效。名称集合可能更倾向于“倾斜”不同的值。@Tim-经过一些调整,这个查询就做到了。我做了下面的操作,它按大小写顺序进行了操作,当image为NULL时,则为0,否则为1 END DESC,name ASC,imageDESC@Roland:
当图像为空时,则0其他1结束说明
与我的
相同。当图像为空时,则1其他0结束说明
。所以Cyberdude的假设是正确的。名称在顺序中没有最高优先级,而是图像。我的第一个理解是不同的:先按名称排序,然后按可为空的图像排序,其中记录的是图像=如果有多条记录具有相同名称,则首先为null。或的可能重复项或可能重复项