我有一个像这样的数据库表:
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)?
答案 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 按订单排序