【问题标题】:What does EXISTS 1 in SQL mean?SQL中的EXISTS 1是什么意思?
【发布时间】:2022-12-04 20:43:42
【问题描述】:

我对子查询主题很陌生。我想了解 SQL 中的 EXISTS 1 是什么意思,因为当我用 * 替换 1 时,它返回相同的结果。

【问题讨论】:

    标签: mysql sql subquery


    【解决方案1】:

    在 SQL 中,子查询中使用 EXISTS 关键字来检查外部查询中是否存在一行。例如,以下查询在子查询中使用 EXISTS 关键字来查找至少有一个订单的所有产品:

    SELECT * FROM products
    WHERE EXISTS (
        SELECT 1 FROM orders
        WHERE orders.product_id = products.id
    )
    

    在此查询中,子查询 SELECT 1 FROM orders WHERE orders.product_id = products.id 如果外部查询中存在产品订单,则返回 1,如果不存在订单,则返回 NULL。然后 EXISTS 关键字检查子查询的结果是否不为 NULL(即订单是否存在),并在外部查询中返回满足此条件的产品。

    在这种情况下,在子查询中使用 SELECT 1 相当于使用 SELECT *,因为 EXISTS 只检查一行是否存在,并不关心行中的实际值。因此,以下查询将产生相同的结果:

    SELECT * FROM products
    WHERE EXISTS (
        SELECT * FROM orders
        WHERE orders.product_id = products.id
    )
    

    但是,在子查询中使用 SELECT 1 比使用 SELECT * 更有效,因为它只返回单个值而不是行中的所有值,这可以减少需要在数据库服务器和数据库服务器之间传输的数据量。客户端。

    【讨论】:

      猜你喜欢
      • 2011-04-12
      • 2020-08-15
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多