【发布时间】:2015-02-19 09:54:10
【问题描述】:
我有以下列出电影剧本中场景的 mysql 表:
TABLE "scenes"
id (AUTOINCR) sceneId (VARCHAR)
0 33
1 12
2 33A
3 44
如您所见,场景没有排序。
现在,我想选择一个特定的 sceneId 并找出之后和之前的场景。
我知道如何以“自然”的方式对列表进行排序:
SELECT sceneId FROM scenes ORDER BY sceneId * 1 ASC
这给了我 sceneIds “12”、“33”、“33A”、“44”,这是自然正确的顺序。
现在,假设我有当前的sceneId“33”,并想找出下一个sceneId的id,即“33A”,id为2。
使用 > 搜索列表中的下一行不起作用,因为它在 33 之后给了我 44,而不是 33A:
SELECT id, sceneId FROM scenes WHERE sceneId > 33 (or "33" as it is a varchar?).
如何选择这些字母数字类型?
谢谢, 马蒂亚斯
【问题讨论】:
-
运行
SELECT id, sceneId FROM scenes WHERE sceneId > '33' order by sceneId * 1 ASC limit 1会得到什么 -
我在这里建了一个小提琴:sqlfiddle.com/#!2/d8d4a9/2/0
-
@Kinesias 要获取上一个,您必须对 DESC 进行排序,但您必须始终对数值和字符串值进行排序
标签: mysql alphanumeric