📜  SQL |所有和任何

📅  最后修改于: 2021-09-08 16:24:17             🧑  作者: Mango

ALL & ANY是 SQL 中的逻辑运算符。结果它们返回布尔值。

全部

ALL运算符用于选择 SELECT STATEMENT 的所有元组。它还用于将一个值与另一个值集中的每个值或来自子查询的结果进行比较。

  • 如果所有子查询值都满足条件,则 ALL运算符返回 TRUE。该ALL必须由运算符相比前面,如果所有的子查询值满足条件判断为真。
  • ALL 与 SELECT、WHERE、HAVING 语句一起使用。

ALL 与 SELECT 语句:

Syntax:
SELECT ALL field_name
FROM table_name
WHERE condition(s);

ALL 与 WHERE 或 HAVING 声明:

Syntax:
SELECT column_name(s)
FROM table_name
WHERE column_name comparison_operator ALL
(SELECT column_name
FROM table_name
WHERE condition(s));

例子:
考虑以下产品表和订单详细信息表,

产品表

订单明细表

查询

  • 找到所有产品的名称。
    SELECT ALL ProductName 
    FROM Products
    WHERE TRUE;
    

    输出:

  • 如果 OrderDetails 中的所有记录的 Quantity 等于 6 或 2,则查找产品的名称。
    SELECT ProductName 
    FROM Products
    WHERE ProductID = ALL (SELECT ProductId
                           FROM OrderDetails
                           WHERE Quantity = 6 OR Quantity = 2);
    

    输出:

  • 查找该 OrderID 的所有产品中最大数量大于所有 OrderID 平均数量的 OrderID。
    SELECT OrderID 
    FROM OrderDetails 
    GROUP BY OrderID 
    HAVING max(Quantity) > ALL (SELECT avg(Quantity) 
                                FROM OrderDetails 
                                GROUP BY OrderID);
    

    输出:

任何

ANY 将一个值与列表中的每个值或查询结果进行比较,如果内部查询的结果至少包含一行,则计算结果为真。

  • 如果任何子查询值满足条件,则 ANY 返回 true。
  • 任何必须由运算符相比前面。
    句法:
SELECT column_name(s)
FROM table_name
WHERE column_name comparison_operator ANY
(SELECT column_name
FROM table_name
WHERE condition(s));

查询

  • 查找在 OrderDetails 表中有任何记录的产品的 Distinct CategoryID。
    SELECT DISTINCT CategoryID
    FROM Products 
    WHERE ProductID = ANY (SELECT ProductID 
                           FROM OrderDetails);
    

    输出:

  • 在 OrderDetails 表中查找 Quantity = 9 的任何记录。
    SELECT ProductName
    FROM Products
    WHERE ProductID = ANY (SELECT ProductID
                           FROM OrderDetails
                           WHERE Quantity = 9);