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提到的那样
- 检查字段是否在数组中
SELECT *
FROM tableName
WHERE field = ANY(ARRAY['value1', 'value2'])
并且您可以使用您选择的语言来动态填充这些值
- 或者如果这些值已经在 table 中,您可以
SELECT *
FROM tableName
WHERE field IN (SELECT field FROM otherTableName)
我有一个简单的 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提到的那样
- 检查字段是否在数组中
SELECT *
FROM tableName
WHERE field = ANY(ARRAY['value1', 'value2'])
并且您可以使用您选择的语言来动态填充这些值
- 或者如果这些值已经在 table 中,您可以
SELECT *
FROM tableName
WHERE field IN (SELECT field FROM otherTableName)