sql - SQL查询中为什么会引用未知列
问题描述
我正在更新一些 SQL 查询以针对 MariaDB 而不是通过 SQL Anywhere 运行。我正在运行的一个查询出错了:
Error Code: 1054. Unknown column 'choice' in 'field list'
这是针对此查询:
SELECT
(select firstname||' '||lastname||' ('||service||')' from staff_members where id_number = customer_assignment_reviews.staff_member_id) as Rep,
(select customer_firstname||' '|| customer_lastname from customers where id_number = customer_assignment_reviews.cs_id) as Cus,
last_modified as "Response Date",replace(review_reason,'’','') as "Reason",
(Select choice = CASE
when accepted = 0 then 'No'
when accepted = 1 then 'Yes'
end) as "Accepted?"
FROM customer_assignment_reviews
where staff_member_id in (Select id_number from kar.staff_members where division_id = 6)
and "Response Date" between today() - 7 and today() /* Date Range */
and "Accepted?" = 'No'
Order by 3 desc
此错误消息是否像听起来那样简单?只是说目标表上不存在“选择”列?
我只是想解释为什么这段代码(我继承的)会引用一个不存在的列。在运行时这里可以预料到一些事情吗?
解决方案
您不需要在SELECT
列表中使用子查询
SELECT
-- ...
(Select choice = CASE
when accepted = 0 then 'No'
when accepted = 1 then 'Yes'
end) as "Accepted?"
=>
SELECT
CASE
when accepted = 0 then 'No'
when accepted = 1 then 'Yes'
end as "Accepted?"
Additionaly 语法SELECT alias = expression
仅特定于 T-SQL:
SELECT alias = 1
<=>
SELECT 1 AS alias
推荐阅读
- python - Dataclasses 和 TypedDicts 之间的类型检查转换
- python-3.x - 如何从文件夹中获取最新的同名文件?
- java - 如何通过 ResponseEntity 发送 ByteArrayResource
- javascript - 在 React 中将 JSON 数据解析为 Chartjs
- .net - 如何在低级 ElasticSearch.NET 客户端的类查询中搜索类?
- python - 如何使用 Matplotlib 制作更精细的 3D 绘图
- python - 有没有办法根据列中的相似元素加入 2 个熊猫数据框?
- visual-studio - 如何隐藏/显示评论
- c# - UWP - x:Bind 和 Binding - AdaptativeGridView 内的 FlipView - 仅使用 x:Bind
- canvas - 拍照并上传html表单