- 作者:
- 分类:知识&开发->语言->DataBase
- 阅读:900
- 点赞:1
- 版权:CC BY-SA 4.0
- 创建:2019-10-13
- 更新:2019-10-20
常规语句与奇妙的语句
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/36
原文链接(持续更新):https://neucrack.com/p/36
获取表
select name from sqlite_master where type="table";
获取表字段及类型
pragma table_info("user");
返回自增ID的值
select last_insert_rowid();
# MySQL 是 SELECT LAST_INSERT_ID();
获取行 id , 获取结果的特定行的数据(/分页)
SELECT rowid, _rowid_, oid from table;
这里这个table
是通过create table
语句实际创建了的数据表, 如果是查询的临时表则不能使用, 比如
SELECT rowid FROM (SELECT * from table);
有时需要获取表的某些行为结果,显然想用rowid
来判断是不行了,比如:
SELECT * FROM (SELECT * from table) WHERE rowid>10 AND rowid < 20;
这时需要使用LIMIT
:
SELECT * FROM (SELECT * from table) WHERE LIMIT 10,20;
或者
SELECT * FROM (SELECT * from table) WHERE LIMIT 10 OFFSET 10;
这样得到的数据就是查询结果的 10
到20
行
使用LIMIT
不能做到提取特定多行的结果(也许能?), 比如想得到第5
行和第20
行,也可以这样做,只是看起来比较麻烦而且对于条件复杂的就更不好做了:
SELECT ( SELECT COUNT(*) FROM table AS t2 WHERE(t2.read > t1.read) ) as row_id, id, read FROM table t1 ORDER BY row_id;