一、SQLite3 中limit、offset使用說明
假設表列值爲 0,1...9(假設由select * from <table_name>獲得);
LIMIT 子句限定行數的最大值。負的 LIMIT 表示無上限。後跟可選的 OFFSET 說明跳過結果集中的前多少行。在一個複合查詢中, LIMIT子句只允許出現在最終 SELECT 語句中。限定對於所有的查詢均適用,而不僅僅是添加了 LIMIT 子句的那一行。注意 OFFSET 關鍵字用於LIMIT 子句中,則限制值是第一個數字,而偏移量(offset)是第二個數字。若用逗號替代 OFFSET 關鍵字,則偏移量是第一個數字而限制值是第二個數字。
1. select <列名/ *> from <table_name> limit 6【limit :限制值】
結果: 0,1...5; (前 6 條數據)
2. select <列名/ *> from
<table_name> limit 6 offset 2
【limit :限制值 ;offset :偏移量】
結果: 2,3...7; (從 0 開始偏移 2 個後的 6 條數據)
3. select <列名/ *> from
<table_name> limit 2, 6
【偏移量,限制值】
結果:同 2
4. delete from <table_name> where rowid in(select rowid from <table_name> limit 1 offset
4)
結果:刪除第五行
limit 1:刪除 1 行
offset 4:偏移 4 行
二、Sqlite3中去掉多餘的重複記錄
5. select distinct <列名/ *> from <table_name>
說明:加上關鍵字distinct會去掉多餘的重複記錄
三、排序
1. 升序:
select <列名/ *> from <table_name> order by <列名/
*>
2. 降序:
select <列名/ *> from <table_name>
order by <列名/*> DESC
四、在使用API:sqlite3_get_table獲取數據時,記得對應用sqlite3_free_table函數釋放佔用的內存,因爲sqlite3_get_table包含malloc函數申請內存的處理,如若不用sqlite3_free_table會內存泄露。同樣對pzErrmsg也要用sqlite3_free釋放內存。
int sqlite3_get_table(
sqlite3 *db, /* An open database */
const char *zSql, /* SQL to be evaluated */
char ***pazResult, /* Results of the query */
int *pnRow, /* Number of result rows written here */
int *pnColumn, /* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
void sqlite3_free_table(char **result);
http://blog.csdn.net/lugandong/article/details/48501375
注:更多直接瀏覽Sqlite3官網