Trong MySQL, nhà điều hành không tồn tại cho phép bạn kiểm tra sự không tồn tại của bất kỳ bản ghi nào trong một truy vấn con. Toán tử không tồn tại trả về true nếu SBURERY trả về không có hàng. Toán tử không tồn tại có thể được sử dụng trong một câu lệnh CHỌN, CHỌN, CẬP NHẬT hoặc XÓA.
LƯU Ý: Các câu lệnh MySQL sử dụng điều kiện không tồn tại không hiệu quả vì trình tự phụ được chạy lại cho mỗi hàng trong bảng truy vấn bên ngoài. MySQL statements that use the NOT EXISTS Condition are not efficient because the sub-query is RE-RUN for EVERY row in the outer query's table.
MySQL không tồn tại cú pháp toán tử
Để kiểm tra sự không tồn tại của bất kỳ bản ghi nào trong trình điều khiển con, hãy sử dụng cú pháp sau:
Cú pháp
SELECT col1, col2,.... FROM tablename WHERE NOT EXISTS [SELECT col1 FROM tablename WHERE condition];
Parameters:
TableName: Tên bảng mà bạn muốn thực hiện toán tử
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1.
SBURERY: Thường là một câu lệnh select bắt đầu với tên chọn * hoặc tên cột. MySQL bỏ qua danh sách chọn từ Sub trình điều khiển.
MySQL không tồn tại ví dụ toán tử với câu lệnh select
Toán tử MySQL sau đây,
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 được sử dụng toán tử MySQL
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1:
Thí dụ
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;
Note:
Trong ví dụ trên, nhà điều hành
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 sẽ trả về tất cả các bản ghi từ "TBLBankDematAccountNetges" trong đó không có bản ghi trong bảng tblbankheadquartersanddress với "Bankid" phù hợp.
Bạn có thể sử dụng máy khách dòng lệnh MySQL để sử dụng toán tử
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 trong trình điều khiển con. Nó sẽ trông giống thế này:
Điều gì không tồn tại có nghĩa là trong SQL?
Nếu một công cụ con trả về bất kỳ hàng nào,
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;6 là
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7 và
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;8 là
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;9. Ví dụ:
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
Theo truyền thống, một truy vấn con
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
0 bắt đầu với SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
1, nhưng nó có thể bắt đầu bằng SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
2 hoặc SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
3 hoặc bất cứ điều gì. MySQL bỏ qua danh sách SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
4 trong một truy vấn con như vậy, vì vậy nó không có gì khác biệt.Đối với ví dụ trước, nếu
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
5 chứa bất kỳ hàng nào, thậm chí các hàng không có gì ngoài các giá trị SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
6, điều kiện SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
0 là SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7. Đây thực sự là một ví dụ không thể xảy ra bởi vì một truy vấn con
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
9 hầu như luôn luôn chứa các mối tương quan. Dưới đây là một số ví dụ thực tế hơn:Những loại cửa hàng có mặt trong một hoặc nhiều thành phố?
SELECT DISTINCT store_type FROM stores WHERE EXISTS [SELECT * FROM cities_stores WHERE cities_stores.store_type = stores.store_type];
Loại cửa hàng nào có mặt ở No City?
SELECT DISTINCT store_type FROM stores WHERE NOT EXISTS [SELECT * FROM cities_stores WHERE cities_stores.store_type = stores.store_type];
Những loại cửa hàng có mặt ở tất cả các thành phố?
SELECT DISTINCT store_type FROM stores s1 WHERE NOT EXISTS [ SELECT * FROM cities WHERE NOT EXISTS [ SELECT * FROM cities_stores WHERE cities_stores.city = cities.city AND cities_stores.store_type = stores.store_type]];
Ví dụ cuối cùng là truy vấn
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
0 được lồng đôi. Đó là, nó có một điều khoản SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
0 trong một điều khoản SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1. Chính thức, nó trả lời câu hỏi mà một thành phố có tồn tại với một cửa hàng không có trong
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
3 không? Nhưng dễ dàng hơn để nói rằng một SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 được lồng vào câu hỏi là
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
5 SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7 cho tất cả
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
7?“does a city exist with a store that is not in SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
3”? But it is easier to say that a nested SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 answers the question “is
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
5 SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7 for all
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
7?”Trong MySQL 8.0.19 và sau đó, bạn cũng có thể sử dụng
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
0 hoặc SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 với
SELECT DISTINCT store_type FROM stores
WHERE NOT EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
0 trong truy vấn con, như thế này:SELECT column1 FROM t1 WHERE EXISTS [TABLE t2];
Các kết quả giống như khi sử dụng
SELECT DISTINCT store_type FROM stores
WHERE NOT EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
1 mà không có mệnh đề SELECT DISTINCT store_type FROM stores
WHERE NOT EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
2 trong truy vấn con. 13.2.10.6 & NBSP; Các nhóm phụ có tồn tại hoặc không tồn tại
Nếu một công cụ con trả về bất kỳ hàng nào,
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;6 là
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7 và
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;8 là
SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;9. Ví dụ:
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
Theo truyền thống, một truy vấn con
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
0 bắt đầu với SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
1, nhưng nó có thể bắt đầu bằng SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
2 hoặc SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
3 hoặc bất cứ điều gì. MySQL bỏ qua danh sách SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
4 trong một truy vấn con như vậy, vì vậy nó không có gì khác biệt.Đối với ví dụ trước, nếu
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
5 chứa bất kỳ hàng nào, thậm chí các hàng không có gì ngoài các giá trị SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
6, điều kiện SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
0 là SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7. Đây thực sự là một ví dụ không thể xảy ra bởi vì một truy vấn con
SELECT column1 FROM t1 WHERE EXISTS [SELECT * FROM t2];
9 hầu như luôn luôn chứa các mối tương quan. Dưới đây là một số ví dụ thực tế hơn:Những loại cửa hàng có mặt trong một hoặc nhiều thành phố?
SELECT DISTINCT store_type FROM stores WHERE EXISTS [SELECT * FROM cities_stores WHERE cities_stores.store_type = stores.store_type];
Loại cửa hàng nào có mặt ở No City?
SELECT DISTINCT store_type FROM stores WHERE NOT EXISTS [SELECT * FROM cities_stores WHERE cities_stores.store_type = stores.store_type];
Những loại cửa hàng có mặt ở tất cả các thành phố?
SELECT DISTINCT store_type FROM stores s1 WHERE NOT EXISTS [ SELECT * FROM cities WHERE NOT EXISTS [ SELECT * FROM cities_stores WHERE cities_stores.city = cities.city AND cities_stores.store_type = stores.store_type]];
Ví dụ cuối cùng là truy vấn
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
0 được lồng đôi. Đó là, nó có một điều khoản SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
0 trong một điều khoản SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1. Chính thức, nó trả lời câu hỏi mà một thành phố có tồn tại với một cửa hàng không có trong
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
3 không? Nhưng dễ dàng hơn để nói rằng một SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 được lồng vào câu hỏi là
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
5 SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7 cho tất cả
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
7?“does a city exist with a store that is not in SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
3”? But it is easier to say that a nested SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;1 answers the question “is
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
5 SELECT A.accountName FROM tblbankdemataccountcharges A WHERE NOT EXISTS [SELECT B.banks FROM tblbankheadquartersandaddress B WHERE A.bankId = B.pk] LIMIT 5;7 for all
SELECT DISTINCT store_type FROM stores
WHERE EXISTS [SELECT * FROM cities_stores
WHERE cities_stores.store_type = stores.store_type];
7?”