SELECT WHERE 列值在数组中

SELECT WHERE column values are in array

提问人:gwydion93 提问时间:12/16/2021 最后编辑:Erwin Brandstettergwydion93 更新时间:8/10/2023 访问量:8707

问:

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

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

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

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

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

SQL 数组 postgresql where-clause

评论

1赞 Edouard 12/16/2021
SELECT * FROM myTable WHERE columnB IN ('Red', 'Blue', 'Green')请参阅手册

答:

3赞 sairfan 12/16/2021 #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');  

或者用简单的词语(注意文本,如果它在下部、上部或适当的基部)。

SELECT * FROM design WHERE Color IN ('Red', 'Green', 'Blue');  
2赞 Erwin Brandstetter 12/16/2021 #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');

相关: