Using CASE in combination with WHERE to specify different columns to filter by(结合使用 CASE 和 WHERE 来指定不同的列作为过滤依据)
问题描述
这可能不是有效的 SQL,但这是我想要做的:
This probably isn't valid SQL, but this is what I'm trying to do:
SELECT *
FROM tablename
WHERE
(CASE @ScoreType
WHEN 1 THEN score1
WHEN 2 THEN score2
ELSE score3 END) >= @Score
基本上,我试图根据 @ScoreType
的值在 WHERE
子句中按不同的列进行过滤.我猜测我的方法无效是否正确?如果是这样,解决此问题的正确方法是什么?
Basically, I'm trying to filter by different columns in the WHERE
clause depending on the value of @ScoreType
. Am I right in guessing that my approach isn't valid? If so, what would be the proper way to go about this?
edit:抱歉,我在简化查询时不小心省略了 end
以在此处发布.实际查询确实有 end
.查询本身运行良好,但结果并不如预期.原来问题出在别处.我怀疑 WHERE
子句,因为我以前从未尝试过这样的事情,并且不确定它是否是有效的 SQL.
edit: Sorry, I accidentally omitted end
while simplifying the query to post here. The actual query does have end
. The query itself runs fine, but the results weren't as expected. It turns out the issue was elsewhere. I suspected the WHERE
clause because I've never tried anything like this before and was unsure of whether it was valid SQL.
推荐答案
这应该可行吗?
SELECT *
FROM tablename
WHERE
(CASE @ScoreType
WHEN 1 THEN score1
WHEN 2 THEN score2
WHEN 3 THEN score3
END) >= @Score
<小时>
我认为问题是:你忘记了案例的end
I think the problem is: you forgot the end
to the case
这篇关于结合使用 CASE 和 WHERE 来指定不同的列作为过滤依据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:结合使用 CASE 和 WHERE 来指定不同的列作为过滤依


- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- SQL 临时表问题 2022-01-01
- 更改自动增量起始编号? 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01