1. 程式人生 > >資料庫sqlite查詢語句與升序或降序

資料庫sqlite查詢語句與升序或降序

注意降序dec或升序 裡面如果不是迴圈while的話,取得都是一個數據。
    如果是降序,只取一個(沒有迴圈)取的是一個 最大的數;
   如果是升序,只取一個(沒有迴圈)取的是一個 最小的數

SQLite Where 子句

SQLite的 WHERE 子句用於指定從一個表或多個表中獲取資料的條件。

如果滿足給定的條件,即為真(true)時,則從表中返回特定的值。您可以使用 WHERE 子句來過濾記錄,只獲取需要的記錄。

WHERE 子句不僅可用在 SELECT 語句中,它也可用在 UPDATE、DELETE 語句中,等等,這些我們將在隨後的章節中學習到。

語法

SQLite 的帶有 WHERE 子句的 SELECT 語句的基本語法如下:

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

例項

您還可以使用比較或邏輯運算子指定條件,比如 >、<、=、LIKE、NOT,等等。假設 COMPANY 表有以下記錄:

ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------1Paul32California20000.02Allen25Texas15000.03Teddy23Norway20000.04Mark25Rich
-Mond65000.05David27Texas85000.06Kim22South-Hall45000.07James24Houston10000.0

下面的例項演示了 SQLite 邏輯運算子的用法。下面的 SELECT 語句列出了 AGE 大於等於 25 工資大於等於 65000.00 的所有記錄:

sqlite> SELECT * FROM COMPANY WHERE AGE >=25 AND SALARY >=65000;
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------
4Mark25Rich-Mond65000.05David27Texas85000.0

下面的 SELECT 語句列出了 AGE 大於等於 25 工資大於等於 65000.00 的所有記錄:

sqlite> SELECT * FROM COMPANY WHERE AGE >=25 OR SALARY >=65000;
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------1Paul32California20000.02Allen25Texas15000.04Mark25Rich-Mond65000.05David27Texas85000.0

下面的 SELECT 語句列出了 AGE 不為 NULL 的所有記錄,結果顯示所有的記錄,意味著沒有一個記錄的 AGE 等於 NULL:

sqlite>  SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------1Paul32California20000.02Allen25Texas15000.03Teddy23Norway20000.04Mark25Rich-Mond65000.05David27Texas85000.06Kim22South-Hall45000.07James24Houston10000.0

下面的 SELECT 語句列出了 NAME 以 'Ki' 開始的所有記錄,'Ki' 之後的字元不做限制:

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------6Kim22South-Hall45000.0

下面的 SELECT 語句列出了 NAME 以 'Ki' 開始的所有記錄,'Ki' 之後的字元不做限制:

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------6Kim22South-Hall45000.0

下面的 SELECT 語句列出了 AGE 的值為 25 或 27 的所有記錄:

sqlite> SELECT * FROM COMPANY WHERE AGE IN (25,27);
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------2Allen25Texas15000.04Mark25Rich-Mond65000.05David27Texas85000.0

下面的 SELECT 語句列出了 AGE 的值既不是 25 也不是 27 的所有記錄:

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN (25,27);
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------1Paul32California20000.03Teddy23Norway20000.06Kim22South-Hall45000.07James24Houston10000.0

下面的 SELECT 語句列出了 AGE 的值在 25 與 27 之間的所有記錄:

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------2Allen25Texas15000.04Mark25Rich-Mond65000.05David27Texas85000.0

下面的 SELECT 語句使用 SQL 子查詢,子查詢查詢 SALARY > 65000 的帶有 AGE 欄位的所有記錄,後邊的 WHERE 子句與 EXISTS 運算子一起使用,列出了外查詢中的 AGE 存在於子查詢返回的結果中的所有記錄:

sqlite> SELECT AGE FROM COMPANY 
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY >65000);
AGE
----------32252325272224

下面的 SELECT 語句使用 SQL 子查詢,子查詢查詢 SALARY > 65000 的帶有 AGE 欄位的所有記錄,後邊的 WHERE 子句與 > 運算子一起使用,列出了外查詢中的 AGE 大於子查詢返回的結果中的年齡的所有記錄:

sqlite> SELECT * FROM COMPANY 
        WHERE AGE >(SELECT AGE FROM COMPANY WHERE SALARY >65000);
ID          NAME        AGE         ADDRESS     SALARY
--------------------------------------------------1Paul32California20000.0

SQL 語句中, asc是指定列按升序排列,desc則是指定列按降序排列。

排序子句語法:order by 列名 asc/desc

例表格:tt

1、按列n2的升序排列

1select * from tt order by n2 asc;

2、按列n2的降序排列

1select * from tt order by n2 desc;

3、複合排序,先按列n1升序排列,再按n2降序排列

query="select * from tb_shop id order by id desc limit 0,1";

order by id desc是按id進行降序排列
limit 0,1 是隻取記錄中的第一條.
所以這條語句只能得到一條記錄
如想取前10條則 limit 0,10或limit 10
如想取第10至20條則 limit 10,20