SQLite3使用小貼士

一、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官網

發佈了33 篇原創文章 · 獲贊 18 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章