SQL Access与MySQL之间的SQL查询差异

时间:2016-04-25 18:56:12

标签: mysql ms-access

我无法将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语句中使用新列。

有谁知道是否是这种情况,或者真正的问题是什么(以及解决方案)?提前谢谢!

1 个答案:

答案 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`)

第三,中的 必须用“(反引号)包装别名列,简单的引号在那里不起作用。