mysql不支持MINUS運算符,但可以使用MySQL JOIN來模擬它,語法格式“select 字段列表 FROM 表1 LEFT JOIN 表2 ON join_predicate WHERE 表2.id IS NULL;”。
(推薦教程:mysql視頻教程)
SQL MINUS運算符簡介
MINUS在包含SQL標準的三個操作之一union,INTERSECT和MINUS。
MINUS比較兩個查詢的結果,并返回第一個查詢中不是由第二個查詢輸出的不同行。
MINUS?指令是運用在兩個 SQL 語句上。它先找出第一個 SQL 語句所產生的結果,然后看這些結果有沒有在第二個 SQL 語句的結果中。如果有的話,那這一筆資料就被去除,而不會在最后的結果中出現。如果第二個 SQL 語句所產生的結果并沒有存在于第一個 SQL 語句所產生的結果內,那這筆資料就被拋棄。
以下說明了MINUS運算符的語法:
SELECT?column_list_1?FROM?table_1 MINUS? SELECT?columns_list_2?FROM?table_2;
使用MINUS運算符的查詢的基本規則如下:
-
數量和兩列的順序column_list_1和column_list_2必須相同。
-
兩個查詢中相應列的數據類型必須兼容。
假設我們有兩個表t1并t2具有以下結構和數據:
CREATE?TABLE?t1?( ????id?INT?PRIMARY?KEY ); ? CREATE?TABLE?t2?( ????id?INT?PRIMARY?KEY ); ? INSERT?INTO?t1?VALUES?(1),(2),(3); INSERT?INTO?t2?VALUES?(2),(3),(4);
以下查詢返回t1表的查詢中的不同值,這些值在表的查詢結果中找不到t2。
SELECT?id?FROM?t1 MINUS SELECT?id?FROM?t2;
以下是MINUS圖說明:
MySQL MINUS運算符
不幸的是,MySQL不支持MINUS運算符。但是,您可以使用MySQL JOIN來模擬它。
要模擬MINUS兩個查詢,請使用以下語法:
SELECT? ????column_list? FROM? ????table_1 ????LEFT?JOIN?table_2?ON?join_predicate WHERE? ????table_2.id?IS?NULL;
例如,以下查詢使用LEFT JOIN子句返回與MINUS運算符相同的結果:
SELECT? ????id FROM ????t1 ????????LEFT?JOIN ????t2?USING?(id) WHERE ????t2.id?IS?NULL;
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦