SELECT WHERE 列值在数组中

SELECT WHERE column values are in array

假设我有一个名为 'myTable' 的 table:

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

上面的 table 是为了演示目的对实际 table 的简化。想象一下实际 table 是 100K + 行。现在,我只想 select columnB 在 list/array 中的行:ex - ['Red'、'Blue'、'Green']。我不确定此处使用的语法是否正确。

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

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

这是示例,我相信它适用于 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');  

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

相关:

  • IN vs ANY operator in PostgreSQL