Postgresql:循环值列表以使用多个 WHERE 子句创建 SELECT

Postgresl : Loop a list of values to create SELECT with mulitple WHERE clause

我有一个简单的 SQL 查询,例如

SELECT * from tableName
WHERE (field = 'value1') OR (field = 'value2') OR (field = 'value3') ...

我懒得像上面那样写硬代码写 SQL 查询。 我想提取 value1, value2 , ... 在数组(或任何集合)

如何编写上面的查询以便它可以循环值列表?

# declare array

# loop for each element in the array
SELECT * from tableName WHERE (field = element) 

# or even better
# build the WHERE clause with a loop
whereClause = (field = 'value1') OR (field = 'value2') OR (field = 'value3') ...

SELECT * from tableName WHERE whereClause

正如a_horse_with_no_name提到的那样

  1. 检查字段是否在数组中
SELECT *
FROM   tableName 
WHERE  field = ANY(ARRAY['value1', 'value2'])

并且您可以使用您选择的语言来动态填充这些值

  1. 或者如果这些值已经在 table 中,您可以
SELECT * 
FROM   tableName
WHERE  field IN (SELECT field FROM otherTableName)