我无法将MS Access查询转换为MySQL视图。似乎在Access中,您可以使用稍后在select语句中在同一select语句中创建的字段。然而,在MySQL中,情况似乎并非如此。
e.g。访问生成的代码
SELECT IIf([Bonus]>0,[Base Salary],0) AS [BE Base], [BE Base]+[Bonus] AS [BE TC]
FROM titles_tbl INNER JOIN wage_tbl ON titles_tbl.Job_Title = wage_tbl.[Standard Title]
WHERE (((titles_tbl.Mod_Code)="3B") AND ((wage_tbl.Bonus)>0));
vs MySQL转换代码
select if(`bonus`>0,`base salary`,0) as `be base`, `be base`+`bonus` as `be tc`
from titles_tbl inner join wage_tbl on titles_tbl.job_title = wage_tbl.`standard title`
where (((titles_tbl.mod_code)="3b") and ((wage_tbl.bonus)>0));
当我将这个Access生成的SQL代码放入MySQL时(在适当地转换它之后),我收到错误说
10:17:07 Error Code: 1054. Unknown column 'be base' in 'field list' 0.062 sec
对我来说,似乎MySQL不能在生成它的同一个select语句中使用新列。
有谁知道是否是这种情况,或者真正的问题是什么(以及解决方案)?提前谢谢!
答案 0 :(得分:0)
你的MySQL代码应该是
select if(`bonus`>0,`base salary`,0) as `be base`,
((SELECT `be base`) + `bonus`) as `be tc`
from ...
首先,如果你在别名中使用空格,你应该用'(引用)或`(反引号)包围别名
其次,如果要在SELECT中引用相同SELECT的别名,则必须(SELECT `the_alias`)
第三,中的 必须用“(反引号)包装别名列,简单的引号在那里不起作用。