Sql server SQL Server中的自定义排序
我有一张这样的桌子:Sql server SQL Server中的自定义排序,sql-server,Sql Server,我有一张这样的桌子: Table_id | Name | Mark | IDTable -----------+----------+---------+------------ 1 | John | 12 | NULL 2 | Alex | 15 | NULL 3 | Josh | 11 | NULL 4 | Merry | 17
Table_id | Name | Mark | IDTable
-----------+----------+---------+------------
1 | John | 12 | NULL
2 | Alex | 15 | NULL
3 | Josh | 11 | NULL
4 | Merry | 17 | 2
5 | Gary | 13 | NULL
6 | Jimmy | 18 | 1
Table_id | Name | Mark | IDTable
-----------+----------+---------+------------
1 | John | 12 | NULL
6 | Jimmy | 18 | 1
2 | Alex | 15 | NULL
4 | Merry | 17 | 2
3 | Josh | 11 | NULL
5 | Gary | 13 | NULL
我想将表排序为如下所示:
Table_id | Name | Mark | IDTable
-----------+----------+---------+------------
1 | John | 12 | NULL
2 | Alex | 15 | NULL
3 | Josh | 11 | NULL
4 | Merry | 17 | 2
5 | Gary | 13 | NULL
6 | Jimmy | 18 | 1
Table_id | Name | Mark | IDTable
-----------+----------+---------+------------
1 | John | 12 | NULL
6 | Jimmy | 18 | 1
2 | Alex | 15 | NULL
4 | Merry | 17 | 2
3 | Josh | 11 | NULL
5 | Gary | 13 | NULL
我的意思是,首先尝试按Table\u ID
排序,但是如果IDTable
等于Table\u ID
将其显示在该行下。对于示例数据,COALESCE将起作用:
ORDER BY COALESCE(IDTable, Table_id )
, IDTable
对于您的示例数据,合并将起作用:
ORDER BY COALESCE(IDTable, Table_id )
, IDTable
IDTable
是Table\u id
的子级吗?如果是,你能有多个孩子吗?也就是说,Table\u id
1有一个孩子的Table\u id
为6,还有一个孩子的Table\u id
为7,等等@Larnu,是的,IDTable是Table\u id的孩子,但它只能有一个孩子。IDTable
是Table\u id
的孩子吗?如果是,你能有多个孩子吗?也就是说,Table\u id
1有一个子表的Table\u id
为6,它也有一个子表的Table\u id
为7,等等@Larnu,是的,IDTable是Table\u id子表,但它只能有一个子表。可能要在末尾添加,IDTable
。这将确保值为NULL
的值将显示在顶部,然后是子表。可能需要在末尾添加,IDTable
。这将确保值为NULL
的值将显示在顶部,然后显示子表。