Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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
SQL手动排序器_Sql - Fatal编程技术网

SQL手动排序器

SQL手动排序器,sql,Sql,下面的数据是从SQL表中随机提取的,我希望数据按以下顺序排序。我将如何为它编写SQL查询 编辑:我想要像下图一样的订单 这应该可以做到:(SQL Server、MYSQL) 让我知道。嗯 order by length(desc) desc 注意:desc在几乎所有数据库中都是保留字,因此对于列来说,它是一个错误的选择。此外,在某些数据库中,length()可能被称为len() 此命令按第一列的长度降序排列。这似乎是基于示例数据的排序顺序。尝试以下操作: SELECT [DESC] FROM

下面的数据是从SQL表中随机提取的,我希望数据按以下顺序排序。我将如何为它编写SQL查询

编辑:我想要像下图一样的订单

这应该可以做到:(SQL Server、MYSQL)

让我知道。

order by length(desc) desc
注意:
desc
在几乎所有数据库中都是保留字,因此对于列来说,它是一个错误的选择。此外,在某些数据库中,
length()
可能被称为
len()

此命令按第一列的长度降序排列。这似乎是基于示例数据的排序顺序。

尝试以下操作:

SELECT [DESC]
FROM MyTable
ORDER BY [DESC],
         CASE WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 0 THEN 1
              WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 1 THEN 2
              WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 2 THEN 3
              ELSE 4
         END   

您使用的是哪种数据库管理系统?博士后?Oracle?
按“Desc”排序
不清楚。是否要按“Desc”列按字母顺序对记录进行排序?“SortOrder”列与您的请求相关吗?SQL是一种查询语言,不是DBMS产品。这是正确排序,但我希望它按其他顺序排序。如图1所示,先是XXXXX,然后是YYYY。我想要YYYY,然后XXXX,然后可能是ZZZZ,然后是AAAA,然后是CCCC,等等。。。这意味着值为2的sortorder字段可以是手动顺序。我如何实现它。我已经添加了另一张图片以获得清晰的图像。请看第二张图片。如何实现这种排序?能否为我的查询结果添加屏幕截图。因为我现在没有真正的数据来测试它;(您查询的屏幕截图给出了第一张图像的准确结果。但是我想要第二张图像的结果。我不能共享数据,因为它是敏感信息。嗯,奇怪的要求请查看第二张图像。我想要这样的结果。
SELECT [DESC]
FROM MyTable
ORDER BY [DESC],
         CASE WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 0 THEN 1
              WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 1 THEN 2
              WHEN LEN([DESC]) - LEN(REPLACE([DESC],' ','')) = 2 THEN 3
              ELSE 4
         END