sql - db2中sql查询中的case when子句
问题描述
我有一个 db2/AS400 数据库,我正在尝试执行以下查询:
SELECT *
FROM user
WHERE id IN (
CASE
WHEN 1=1 THEN
(SELECT id
FROM user AS userInner
WHERE userInner.salary < 10)
ELSE
(SELECT id
FROM user AS userInner
WHERE userInner.salary > 20)
END
)
1=1 条件取决于其他条件,但对于这个简单的示例来说没关系。但是,我得到的错误如下:
SQL 错误 [21000]: [SQL0811] SELECT 多于一行的结果。
如何使用 case when 或其他方式来获得具有多个结果的 sql_statement 条件?
谢谢
解决方案
我认为你不需要CASE
。
你可以这样做:
SELECT *
FROM user
WHERE id IN (
SELECT id FROM user
WHERE (1=1 AND userInner.salary < 10)
OR (1<>1 AND userInner.salary > 20)
)
当然你必须1=1
用你的实际情况和1<>1
它的相反来替换。
推荐阅读
- ios - 调用 AddNotificationRequest 后应用程序崩溃
- python - 如何删除或替换两个模式之间的多行文本
- flutter - 增加容器大小
- android - ViewBinding 不适用于 RecyclerView 项目中包含的布局
- angular - 角度:从 ngx-translate 的 i18n 中的翻译文件,我怎样才能得到所有的键?
- python - Postgres 上的 Django JSONField 更新失败:“对于类型字符变化(60)的值太长”
- r - 使用 na.spline() 和 case_when() 按组进行插值和外插
- xml - Andriod Studio 按钮颜色不变
- coldfusion - ColdFusion 9 - Spreadsheetaddrows 在列中删除部分值
- google-developers-console - 我的登录帐户没有出现在 Google Play Console 中,我该怎么办?