当我尝试运行一个例程时,我得到以下错误:
错误代码:1166列名“学校”不正确。学校名称
= case when School.Web School Name
is null then School.学校名称
els'
我仔细检查了列名,实际上有一个School.School Name
。没有前导空格或尾随空格。下面是错误所引用的例程的开头:
CREATE temporary TABLE tt_Step1
SELECT DISTINCT State.Code, State.Name,
School.`School Name` = case
when School.`Web School Name` is null then School.`School Name`
else School.`Web School Name`
end,
School.`School ID`
-- Into tt_Step1
FROM State LEFT JOIN School ON State.Code = School.State
Where (School.`School ID` <> ...
我最近将这段代码从MSSQL转换为MySQL,所以可能有我遗漏的东西,但我找不到任何错误。原始MSSQL查询在SQL Server Management Studio中运行正常,但在MySQL中转换后的版本却不能。
4条答案
按热度按时间h79rfbju1#
在我的例子中,它是由列名后的不可见的额外空格引起的。我写了
promotion-ids
而不是promotion-id
。dbf7pr2w2#
给予这个:
0s7z1bwu3#
你有几个问题。
1.不能为具有多部分名称(如
School.School Name
)的列设置别名。blah as ColumnName
完成的,而不是ColumnName = blah
。6tdlim6h4#
我也遇到过类似的问题。我的问题通过在case语句中添加一个列名解决了。
示例:
如果没有
as valTest
,我会得到1166错误。