【问题标题】:Sql Order By ValueSql 按值排序
【发布时间】:2014-11-01 00:55:04
【问题描述】:

我怎样才能通过Select按顺序排序?

我的意思是,我有这些数据:

column_1   |   column_2
    1      |      a    
    2      |      b    
    3      |      c    
    4      |      d
    4      |      e    
    3      |      f    
    1      |      g    
    2      |      h    

我想按 1-4 组订购,我的意思是:

column_1   |   column_2
    1      |      a    
    2      |      b    
    3      |      c    
    4      |      d
    1      |      g    
    2      |      h 
    3      |      f    
    4      |      e    

我希望 column_1 按 1,2,3,4 值序列排序,然后再次按 1,2,3,4 排序。
我的意思是,我不想这样排序:1,1,2,2,3,3,4,4...

[[编辑]]
column_2 应该按 Asc,我的意思是:Order By column_2 Asc

[[编辑 2]]
我将在 SQLite 上使用这个 Select。我正在尝试找到一种仅使用 SQL 公共命令的方法。

Sql Fiddle

有谁知道这怎么可能?

【问题讨论】:

  • 有什么可以知道哪个 2 应该在特定的 1 之后?还是那有关系?
  • 是的,按 column_2 Asc 排序
  • 如果你想要 1,1,2,2 然后group by。如果您也想订购,那么group by col_1, col_2 order by col_1, col_2 asc
  • 我不想要 1,1,2,2。我要:1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4...

标签: sql sqlite select sql-order-by


【解决方案1】:

如果您想按顺序排序,您真的想枚举第 1 列中的每个值,每个值独立。例如:

1     1
2     1
3     1
4     1
4     2
3     2
2     2
1     2
5     1
5     2
5     3

我不确定在 SQLite 中是否有一种简单的方法可以做到这一点。在 MySQL 中,您将使用变量。在其他数据库中,窗口函数。你可以完成这个相关的子查询:

select column_1, column_2
from (select t.*,
             (select count(*) from table t2 where t2.column_1 = t.column_1 and t2.rowid <= t.rowid
             ) as seqnum
      from table t
     ) t
order by seqnum, column_1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2020-08-16
    相关资源
    最近更新 更多