3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
SQLite 子查詢     資料來源: http://www.runoob.com/sqlite/sqlite-subquery.html     子查詢或內部查詢或嵌套查詢是在另一個 SQLite 查詢內嵌入在 WHERE 子句中的查詢。 使用子查詢返回的資料將被用在主查詢中作為條件,以進一步限制要檢索的資料。 子查詢可以與 SELECT、INSERT、UPDATE 和 DELETE 語句一起使用,可伴隨著使用運算子如 =、<、>、>=、<=、IN、BETWEEN 等。 以下是子查詢必須遵循的幾個規則: 子查詢必須用括弧括起來。 子查詢在 SELECT 子句中只能有一個列,除非在主查詢中有多列,與子查詢的所選列進行比較。 ORDER BY 不能用在子查詢中,雖然主查詢可以使用 ORDER BY。可以在子查詢中使用 GROUP BY,功能與 ORDER BY 相同。 子查詢返回多於一行,只能與多值運算子一起使用,如 IN 運算子。 BETWEEN 運算子不能與子查詢一起使用,但是,BETWEEN 可在子查詢內使用。 SELECT 語句中的子查詢使用 子查詢通常與 SELECT 語句一起使用。基本語法如下: SELECT column_name [, column_name ] FROM   table1 [, table2 ] WHERE  column_name OPERATOR       (SELECT column_name [, column_name ]       FROM table1 [, table2 ]       [WHERE]) 實例 假設 COMPANY 表有以下記錄: ID          NAME        AGE         ADDRESS     SALARY ———-  ———-  ———-  ———-  ———- 1           Paul        32          California  20000.0 2           Allen       25          Texas       15000.0 3           Teddy       23          Norway      20000.0 4           Mark        25          Rich–Mond   65000.0 5           David       27          Texas       85000.0 6           Kim         22          South–Hall  45000.0 7           James       24          Houston     10000.0 現在,讓我們檢查 SELECT 語句中的子查詢使用: sqlite> SELECT *      FROM COMPANY      WHERE ID IN (SELECT ID                   FROM COMPANY                   WHERE SALARY > 45000) ; 這將產生以下結果: ID          NAME        AGE         ADDRESS     SALARY ———-  ———-  ———-  ———-  ———- 4           Mark        25          Rich–Mond   65000.0 5           David       27          Texas       85000.0 INSERT 語句中的子查詢使用 子查詢也可以與 INSERT 語句一起使用。INSERT 語句使用子查詢返回的資料插入到另一個表中。在子查詢中所選擇的資料可以用任何字元、日期或數位函數修改。 基本語法如下: INSERT INTO table_name [ (column1 [, column2 ]) ]            SELECT [ *|column1 [, column2 ]            FROM table1 [, table2 ]            [ WHERE VALUE OPERATOR ] 實例 假設 COMPANY_BKP 的結構與 COMPANY 表相似,且可使用相同的 CREATE TABLE 進行創建,只是表名改為 COMPANY_BKP。現在把整個 COMPANY 表複製到 COMPANY_BKP,語法如下: sqlite> INSERT INTO COMPANY_BKP      SELECT * FROM COMPANY      WHERE ID IN (SELECT ID                   FROM COMPANY) ; UPDATE 語句中的子查詢使用 子查詢可以與 UPDATE 語句結合使用。當通過 UPDATE 語句使用子查詢時,表中單個或多個列被更新。 基本語法如下: UPDATE table SET column_name = new_value [ WHERE OPERATOR [ VALUE ]    (SELECT COLUMN_NAME    FROM TABLE_NAME)    [ WHERE) ] 實例 假設,我們有 COMPANY_BKP 表,是 COMPANY 表的備份。 下面的實例把 COMPANY 表中所有 AGE 大於或等於 27 的客戶的 SALARY 更新為原來的 0.50 倍: sqlite> UPDATE COMPANY      SET SALARY = SALARY * 0.50      WHERE AGE IN (SELECT AGE FROM COMPANY_BKP                    WHERE AGE >= 27 ); 這將影響兩行,最後 COMPANY 表中的記錄如下: ID          NAME        AGE         ADDRESS     SALARY ———-  ———-  ———-  ———-  ———- 1           Paul        32          California  10000.0 2           Allen       25          Texas       15000.0 3           Teddy       23          Norway      20000.0 4           Mark        25          Rich–Mond   65000.0 5           David       27          Texas       42500.0 6           Kim         22          South–Hall  45000.0 7           James       24          Houston     10000.0 DELETE 語句中的子查詢使用 子查詢可以與 DELETE 語句結合使用,就像上面提到的其他語句一樣。 基本語法如下: DELETE FROM TABLE_NAME [ WHERE OPERATOR [ VALUE ]    (SELECT COLUMN_NAME    FROM TABLE_NAME)    [ WHERE) ] 實例 假設,我們有 COMPANY_BKP 表,是 COMPANY 表的備份。 下面的實例刪除 COMPANY 表中所有 AGE 大於或等於 27 的客戶記錄: sqlite> DELETE FROM COMPANY      WHERE AGE IN (SELECT AGE FROM COMPANY_BKP                    WHERE AGE > 27 ); 這將影響兩行,最後 COMPANY 表中的記錄如下: ID          NAME        AGE         ADDRESS     SALARY ———-  ———-  ———-  ———-  ———- 2           Allen       25          Texas       15000.0 3           Teddy       23          Norway      20000.0 4           Mark        25          Rich–Mond   65000.0 5      David       27          Texas       42500.0 6           Kim         22          South–Hall  45000.0 7           James       24          Houston     10000.0          

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦