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