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);