在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ PostgreSQL子查詢
PostgreSQL LIKE條件
PostgreSQL截?cái)啾恚═RUNCATE TABLE語(yǔ)句)
C/C++連接PostgreSQL數(shù)據(jù)庫(kù)
PostgreSQL別名
PostgreSQL日期和時(shí)間函數(shù)
PostgreSQL NOT IN條件
PostgreSQL歷史
PostgreSQL事務(wù)
PostgreSQL AND & OR條件
PostgreSQL NULL值
PostgreSQL教程
PostgreSQL更新數(shù)據(jù)(UPDATE語(yǔ)句)
PostgreSQL ORDER BY子句
PostgreSQL分組(GROUP BY子句)
PostgreSQL數(shù)據(jù)類(lèi)型
PostgreSQL特點(diǎn)
PostgreSQL刪除數(shù)據(jù)庫(kù)
PostgreSQL UNIONS子句
PostgreSQL AND條件
PostgreSQL索引
PostgreSQL刪除表
Perl連接PostgreSQL數(shù)據(jù)庫(kù)
PostgreSQL視圖
PostgreSQL修改表(ALTER TABLE語(yǔ)句)
PostgreSQL全外連接
PostgreSQL命令語(yǔ)法大全
PostgreSQL查詢數(shù)據(jù)(SELECT語(yǔ)句)
PostgreSQL自動(dòng)遞增
PostgreSQL左外連接
PostgreSQL創(chuàng)建表
PostgreSQL模式(架構(gòu))
PostgreSQL觸發(fā)器
PostgreSQL安裝(Windows)
PostgreSQL NOT條件
PostgreSQL Having子句
PostgreSQL函數(shù)(存儲(chǔ)過(guò)程)
Java連接PostgreSQL數(shù)據(jù)庫(kù)
PostgreSQL權(quán)限
PostgreSQL OR條件
PostgreSQL創(chuàng)建數(shù)據(jù)庫(kù)
PostgreSQL BETWEEN條件
PostgreSQL IN條件
Python連接PostgreSQL數(shù)據(jù)庫(kù)
PostgreSQL刪除數(shù)據(jù)(DELETE語(yǔ)句)
PostgreSQL子查詢
PostgreSQL右外連接
PostgreSQL插入數(shù)據(jù)(INSERT語(yǔ)句)
PostgreSQL是什么?
PostgreSQL連接(內(nèi)連接)
PHP連接PostgreSQL數(shù)據(jù)庫(kù)
PostgreSQL條件查詢
PostgreSQL鎖
PostgreSQL跨連接(CROSS JOIN)

PostgreSQL子查詢

子查詢或內(nèi)部查詢或嵌套查詢是一個(gè)PostgreSQL查詢中的查詢,它可以嵌入到WHERE子句中。子查詢用于返回將在主查詢中使用的數(shù)據(jù)作為進(jìn)一步限制要檢索的數(shù)據(jù)的條件。
子查詢可以與SELECT,INSERTUPDATEDELETE語(yǔ)句以及運(yùn)算符(如=,<,>,>=,<=IN等)一起使用。

子查詢必須遵循以下規(guī)則:

  • 子查詢必須括在括號(hào)中。
  • 子查詢?cè)赟ELECT子句中只能有一列,除非主查詢中有多個(gè)列用于比較其所選列的子查詢。
  • ORDER BY不能用于子查詢,盡管主查詢可以使用ORDER BY。 GROUP BY可用于執(zhí)行與子查詢中的ORDER BY相同的功能。
  • 返回多行的子查詢只能與多個(gè)值運(yùn)算符一起使用,例如:INEXISTS,NOT INANY / SOME,ALL運(yùn)算符。
  • BETWEEN運(yùn)算符不能與子查詢一起使用; 但是,BETWEEN可以在子查詢中使用。

帶SELECT語(yǔ)句的子查詢

子查詢最常用于SELECT語(yǔ)句。 基本語(yǔ)法如下:

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
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

現(xiàn)在,我們用SELECT語(yǔ)句檢查以下子查詢:

yiibai_db=# SELECT *
     FROM COMPANY
     WHERE ID IN (SELECT ID
                  FROM COMPANY
                  WHERE SALARY > 45000) ;

這將產(chǎn)生以下結(jié)果:

 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
(2 rows)

帶INSERT語(yǔ)句的子查詢

子查詢也可以用于INSERT語(yǔ)句。INSERT語(yǔ)句使用從子查詢返回的數(shù)據(jù)插入另一個(gè)表。 可以使用任何字符,日期或數(shù)字函數(shù)修改子查詢中選定的數(shù)據(jù)。

基本語(yǔ)法如下:

INSERT INTO table_name [ (column1 [, column2 ]) ]
           SELECT [ *|column1 [, column2 ]
           FROM table1 [, table2 ]
           [ WHERE VALUE OPERATOR ]

示例:

考慮一個(gè)表COMPANY_BKP,其結(jié)構(gòu)與COMPANY表類(lèi)似,可以使用COMPANY_BKP作為表名使用相同的CREATE TABLE數(shù)據(jù)結(jié)構(gòu)來(lái)創(chuàng)建。 現(xiàn)在要將完整的COMPANY表復(fù)制到COMPANY_BKP中,以下是語(yǔ)句:

yiibai_db=# INSERT INTO COMPANY_BKP
     SELECT * FROM COMPANY
     WHERE ID IN (SELECT ID
                  FROM COMPANY) ;

帶UPDATE語(yǔ)句的子查詢:

子查詢可以與UPDATE語(yǔ)句一起使用。 當(dāng)使用具有UPDATE語(yǔ)句的子查詢時(shí),可以更新表中的單列或多列。

UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

示例:

假設(shè)我們有一個(gè)名為COMPANY_BKP表,它是COMPANY表的備份。

以下示例將所有客戶(其AGE大于或等于27)在COMPANY表中的SALARY更新為0.50倍:

testdb=# UPDATE COMPANY
     SET SALARY = SALARY * 0.50
     WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
                   WHERE AGE >= 27 );

這將影響兩行,最后COMPANY表中將具有以下記錄:

id | name  | age | address     | salary
----+-------+-----+-------------+--------
  2 | Allen |  25 | Texas       |  15000
  3 | Teddy |  23 | Norway      |  20000
  4 | Mark  |  25 | Rich-Mond   |  65000
  6 | Kim   |  22 | South-Hall  |  45000
  7 | James |  24 | Houston     |  10000
  1 | Paul  |  32 | California  |  10000
  5 | David |  27 | Texas       |  42500
(7 rows)

帶有DELETE語(yǔ)句的子查詢:

子查詢可以與DELETE語(yǔ)句一起使用,就像上面提到的任何其他語(yǔ)句一樣。

基本語(yǔ)法如下:

DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
   (SELECT COLUMN_NAME
   FROM TABLE_NAME)
   [ WHERE) ]

示例:

假設(shè)我們有一個(gè)COMPANY_BKP表,它是COMPANY表的備份。

以下示例從COMPANY 表中刪除所有客戶的記錄,其AGE大于或等于27數(shù)據(jù)記錄:

testdb=# DELETE FROM COMPANY
     WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
                   WHERE AGE > 27 );

這將影響兩行,最后COMPANY表將具有以下記錄,查詢結(jié)果如下:

 id | name  | age | address     | salary
----+-------+-----+-------------+--------
  2 | Allen |  25 | Texas       |  15000
  3 | Teddy |  23 | Norway      |  20000
  4 | Mark  |  25 | Rich-Mond   |  65000
  6 | Kim   |  22 | South-Hall  |  45000
  7 | James |  24 | Houston     |  10000
  5 | David |  27 | Texas       |  42500
(6 rows)

上一篇:PostgreSQL視圖下一篇:PostgreSQL刪除表