MySQL EXISTS修饰符
时间:2019-02-04 12:52:26 来源:igfitidea点击:
MySQL EXISTS修饰符与子查询结合使用,如果子查询返回至少一行,则认为该条件“被满足”。可以在SELECT,INSERT,UPDATE或DELETE语句中使用。
语法
MySQL中EXISTS修饰符的语法为:
WHERE EXISTS ( subquery );
| 参数 | 说明 |
|---|---|
| subquery | 一个SELECT语句。 会忽略其中的表达式列表。即 SELECT *和 SELECT 字段名对于EXISTS都是一样的 |
MySQL EXISTS修饰符示例
示例-和SELECT语句一起使用
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运算符结合使用。
SELECT *
FROM customers
WHERE NOT EXISTS (SELECT *
FROM order_details
WHERE customers.customer_id = order_details.customer_id);
将从customers表中返回所有记录,条件是order_details表中没有customer_id对应的记录。
示例-和INSERT语句一起使用
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语句一起使用
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语句一起使用
DELETE FROM suppliers
WHERE EXISTS (SELECT *
FROM orders
WHERE suppliers.supplier_id = orders.supplier_id);

