postgresql - Postgresl:循环值列表以使用多个 WHERE 子句创建 SELECT
问题描述
我有一个简单的 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'])
您可以使用您选择的语言来动态填充这些值
- 或者如果这些值已经在表中,您可以
SELECT *
FROM tableName
WHERE field IN (SELECT field FROM otherTableName)
推荐阅读
- database - AWS DMS 复制任务交换使用问题
- java - 无法使用 Spring Cloud Contract Wiremock,无法加载 ApplicationContext
- javascript - JavaScript中如何在对象中返回promise的最佳方式?
- r - 在单独的列中添加每个因素的出现范围(数据框,R)
- python - Django 计算字段不会出现在 get_fields()
- java - Android Webiew 不加载索引的 Sdcard (file://sdcard)
- java - 如何使用 jmsra 配置 project-defaults.yml?
- python - 排除 IF 函数中的两列
- swift - 我可以从自定义视图类更改 NavigationController 设置吗
- swiftui - onTapGesture 与其他视图结合的 SwiftUI 错误或代码问题?