【问题标题】:SELECT WHERE column values are in arraySELECT WHERE 列值在数组中
【发布时间】:2022-01-18 21:42:06
【问题描述】:

假设我有一个名为“myTable”的表:

columnA|    columnB|    columnC
   1   |     Yellow|     Apple
   3   |     Red   |     Grape
   8   |     Blue  |     Banana
   6   |     Green |     Orange

上表是对实际表格的简化,用于演示目的。想象一下实际的表是 100K + 行。现在,我只想选择 columnB 在列表/数组中的行:例如 - ['Red'、'Blue'、'Green']。我不确定在这里使用正确的语法。

 SELECT * FROM myTable WHERE columnB IN Array['Red', 'Blue', 'Green']

实现此目的的正确语法是什么?

【问题讨论】:

  • SELECT * FROM myTable WHERE columnB IN ('Red', 'Blue', 'Green')manual

标签: sql arrays postgresql where-clause


【解决方案1】:

这是示例,我相信它适用于 MS SQL

SELECT p.FirstName, p.LastName, e.JobTitle  
FROM Person.Person AS p  
    JOIN HumanResources.Employee AS e  
    ON p.BusinessEntityID = e.BusinessEntityID  
WHERE e.JobTitle IN ('Design Engineer', 'Tool Designer', 'Marketing Assistant');  

【讨论】:

    【解决方案2】:

    在 Postgres 中,您也可以将数组与 = ANY () 一起使用:

    SELECT * FROM myTable WHERE columnB = ANY (ARRAY['Red', 'Blue', 'Green']);
    

    或者使用文字数组常量作为输入:

    SELECT * FROM myTable WHERE columnB = ANY ('{Red, Blue, Green}'::text[]);
    

    相当于:

    SELECT * FROM myTable WHERE columnB IN ('Red', 'Blue', 'Green');
    

    相关:

    【讨论】:

      猜你喜欢
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      相关资源
      最近更新 更多