mySQL排序和分组

时间:2011-11-07 04:11:44

标签: mysql sql sql-order-by

我有一个像这样的数据库表:

ID     TIME       SUB    INFO
178    9:00AM              A
179    9:10AM              E
180    9:15AM     179      B
181    9:16AM     179      another B
182    9:20AM     179      C
183    9:25AM     179      D
184    9:30AM              F
185    9:35AM     184      before F

我需要此列表才能正确订购信息(A,B,另一个B,C,D,E,F,F之前)。 当用户插入新的INFO以更正订单时,将使用SUB。例如,ID180用户插入“B”以定位在ID179之前。同样,ID181用户也将“C”插入到179之前。

执行此操作的最有效的mysql查询是什么(显然会考虑非字母信息:P)?

2 个答案:

答案 0 :(得分:0)

SELECT
    <column list>
FROM
    My_Table
ORDER BY
    COALESCE(sub, id + 1),
    `time`

这假设sub列实际上是NULL,并且当它没有值时不是空白。另外,名为“time”的列几乎肯定是个坏主意,因为它不是描述性名称,而是关键字。虽然它在MySQL中不是一个保留词,但它可能只会引起很多混乱。命名不佳的列的其他示例可能包括“info”和“sub”。

答案 1 :(得分:0)

SELECT ID,TIME,SUB,INFO FROM table1 按订单排序