【问题标题】:Set Order Of column by Sequence sql按序列 sql 设置列的顺序
【发布时间】:2017-12-24 09:44:41
【问题描述】:

如果我有这样的表:

Id Rnk
1   1
1   1 
1   2
1   2

我想这样安排桌子:

Id Rnk
1   1
1   2
1   1
1   2

我希望它被修复,所以当我选择表格时,顺序将是这样的。关于我该怎么做的任何帮助?

【问题讨论】:

  • 没有默认的表格顺序。你总是需要定义一个order by 以获得保证的结果

标签: sql rank


【解决方案1】:

而且我希望它得到修复,这样每当我选择表的顺序时 会是这样的。

快速回答:无法完成。如果您想按所需顺序获取行,则必须始终在查询中使用ORDER BY 子句。


关于这个话题的一些相关问题和答案:


引用自维基百科:Order by

ORDER BY 是对结果集中的行进行排序的唯一方法。没有 这个子句,关系数据库系统可以返回任何 命令。如果需要订购,必须提供ORDER BY 应用程序发送的SELECT 语句。


维基百科的另一句话Relational database

关系模型指定关系的元组没有 特定的顺序,并且元组反过来对 属性。


为了得到这个具体的顺序,你可以这样使用row_number解析函数:

SELECT "Id", "Rnk"
FROM ( 
  SELECT t.*,
         row_number() over (partition by "Id", "Rnk" order by "Id", "Rnk") as rn
  FROM Table1 t
) x
ORDER BY "Id", rn

PostgreSQL 演示:http://dbfiddle.uk/?rdbms=postgres_10&fiddle=0b86522f37e927a86701e778006e8cad



row_number现在大部分数据库都支持了,甚至MySql也会在下个版本中支持这个功能

【讨论】:

    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 2020-10-18
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多