我的样本数据如下:
taskname |skillname |user |Partition
--------------------------------------
taskAAAA |skill1111 |user3 |1
|skill2222 | |1
taskBBBB |skill1111 |user2 |2
taskCCCC |skill3333 |user1 |3
taskDDDD |skill1111 |user4 |4
|skill2222 | |4
如果有两项技能属于某项任务,则taskname和user将不会在taskname列和用户列中重复。
我设法将分区放到同一个任务名称。但我需要按用户按升序排序,记录将遵循其分区。这种情况的结果如下:
taskname |skillname |user |Partition
--------------------------------------
taskCCCC |skill3333 |user1 |3
taskBBBB |skill1111 |user2 |2
taskAAAA |skill1111 |user3 |1
|skill2222 | |1
taskDDDD |skill1111 |user4 |4
|skill2222 | |4
任何人都可以帮助我?
答案 0 :(得分:0)
第一个选项是使用Order By关键字和NULLS LAST
select * from table order by user NULLS LAST
如果您的SQL不支持NULLS
,您可以使用值IS NULL表达式
select * from table order by user IS NULL, user
如果用户的字段为null,则表达式IS NULL
返回1,否则为0.因此,非空值(0)的行将是第一个,而具有空值(1)的行将是最后一个升序排序。
下一行将按用户字段的值排序。
答案 1 :(得分:0)
ANSI SQL支持NULLS LAST
:
order by user nulls last
并非所有数据库都支持此构造。它可以通过双键搜索轻松取代:
order by (case when user is not null then 1 else 2 end), -- "NULLS LAST"
user