1. 程式人生 > 資料庫 >詳解SQL EXISTS 運算子

詳解SQL EXISTS 運算子

EXISTS 運算子

EXISTS 運算子用於判斷查詢子句是否有記錄,如果有一條或多條記錄存在返回 True,否則返回 False。

SQL EXISTS 語法

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

演示資料庫

在本教程中,我們將使用 RUNOOB 樣本資料庫。

下面是選自 "Websites" 表的資料:

+----+--------------+---------------------------+-------+---------+
| id | name     | url            | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | Google    | https://www.google.cm/  | 1   | USA   |
| 2 | 淘寶    | https://www.taobao.com/  | 13  | CN   |
| 3 | 菜鳥教程 | http://www.runoob.com/  | 4689 | CN   |
| 4 | 微博    | http://weibo.com/     | 20  | CN   |
| 5 | Facebook   | https://www.facebook.com/ | 3   | USA   |
+----+--------------+---------------------------+-------+---------+

下面是 "access_log" 網站訪問記錄表的資料:

mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date    |
+-----+---------+-------+------------+
|  1 |    1 |  45 | 2016-05-10 |
|  2 |    3 |  100 | 2016-05-13 |
|  3 |    1 |  230 | 2016-05-14 |
|  4 |    2 |  10 | 2016-05-14 |
|  5 |    5 |  205 | 2016-05-14 |
|  6 |    4 |  13 | 2016-05-15 |
|  7 |    3 |  220 | 2016-05-15 |
|  8 |    5 |  545 | 2016-05-16 |
|  9 |    3 |  201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)

SQL EXISTS 例項

現在我們想要查詢總訪問量(count 欄位)大於 200 的網站是否存在。

我們使用下面的 SQL 語句:

SELECT Websites.name,Websites.url 
FROM Websites 
WHERE EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);

執行以上 SQL 輸出結果如下:

詳解SQL EXISTS 運算子

EXISTS 可以與 NOT 一同使用,查找出不符合查詢語句的記錄:

SELECT Websites.name,Websites.url 
FROM Websites 
WHERE NOT EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);

執行以上 SQL 輸出結果如下:

詳解SQL EXISTS 運算子

以上就是詳解SQL EXISTS 運算子的詳細內容,更多關於SQL EXISTS 運算子的資料請關注我們其它相關文章!