MySQL EXISTS修饰符


MySQL EXISTS修饰符与子查询结合使用,如果子查询返回至少一行,则认为该条件“被满足”。可以在SELECT,INSERT,UPDATE或DELETE语句中使用。

语法

MySQL中EXISTS修饰符的语法为:

1
WHERE EXISTS ( subquery );
参数 说明
subquery 一个SELECT语句。 会忽略其中的表达式列表。即 SELECT *SELECT 字段名对于EXISTS都是一样的

MySQL EXISTS修饰符示例

示例-和SELECT语句一起使用

1
2
3
4
5
SELECT *
FROM customers
WHERE EXISTS (SELECT *
FROM order_details
WHERE customers.customer_id = order_details.customer_id);

这个MySQL EXISTS修饰符示例将返回customer表中的所有记录,其中order_details表中至少有一条记录与customer_id匹配。


示例-NOT NOTISTS和SELECT语句一起使用

MySQL EXISTS修饰符也可以与NOT运算符结合使用。

1
2
3
4
5
SELECT *
FROM customers
WHERE NOT EXISTS (SELECT *
FROM order_details
WHERE customers.customer_id = order_details.customer_id);

将从customers表中返回所有记录,条件是order_details表中没有customer_id对应的记录。

示例-和INSERT语句一起使用

1
2
3
4
5
6
7
INSERT INTO contacts
(contact_id, contact_name)
SELECT supplier_id, supplier_name
FROM suppliers
WHERE EXISTS (SELECT *
FROM orders
WHERE suppliers.supplier_id = orders.supplier_id);

示例-和UPDATE语句一起使用

1
2
3
4
5
6
7
UPDATE suppliers
SET supplier_name = (SELECT customers.customer_name
FROM customers
WHERE customers.customer_id = suppliers.supplier_id)
WHERE EXISTS (SELECT *
FROM customers
WHERE customers.customer_id = suppliers.supplier_id);

示例-和DELETE语句一起使用

1
2
3
4
DELETE FROM suppliers
WHERE EXISTS (SELECT *
FROM orders
WHERE suppliers.supplier_id = orders.supplier_id);


原文链接:https://codingdict.com/