我在SQLite
数据库中有十个表:
2016_08_01(10)
2016_08_01(9)
2016_08_01(8)
2016_08_01(7)
2016_08_01(6)
2016_08_01(5)
2016_08_01(4)
2016_08_01(3)
2016_08_01(2)
2016_08_01
我使用这个query
得到最后一个表:
SELECT name FROM sqlite_master WHERE type='table' ORDER BY name DESC
但结果是:
2016_08_01(9)
2016_08_01(8)
2016_08_01(7)
2016_08_01(6)
2016_08_01(5)
2016_08_01(4)
2016_08_01(3)
2016_08_01(2)
2016_08_01(10) //why?
2016_08_01
该查询对我有用,直到表2016_08_01(9)
是否有替代query
?或者我的query
出现了问题?
答案 0 :(得分:2)
要使这项工作正常,请构建像2016_08_01(0001)
这样的表名,其中0001
部分保证有足够的字符以适合您将创建的最大数量的表。
但是,请注意,这样做基本上是在破坏SQL数据库的目的。您是否有理由不能使用Segment
列(类型为INT)创建这一个单独的表来区分记录组?
答案 1 :(得分:1)
在 MySQL 相关,因为问题被标记为MySQL以及sqlite
可以通过以下方式完成
SELECT
name
FROM sqlite_master
WHERE type='table'
ORDER BY
COALESCE(SUBSTR(name,LOCATE('(',name)+1,(LOCATE(')',name) -
LOCATE('(',name)-1)),0)+0 DESC;
您可以将其转换为等效的sqlite
逻辑。