2015-01-06 24 views
-2

查询工作以及在访问MS此查询工作以及错误的SQL语法,但对访问MS

select Name, LastName, Email, [Name] + [LastName] + [Email] as ThePass from student; 

但它不会对MySQL的工作,说“你在你的SQL语法错误” 。

这个想法是自动填充基于其他字段的值在同一个表上的字段。

+0

写完整的错误信息 –

+0

#1064 - 您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以找到在[[姓名] + [姓氏] + [电子邮件]附近使用的正确语法。第1行的ThePass FROM student LIMIT 0,30' – userablaniansda

+4

MS Access和MySQL不一样,为什么你会期望一个查询在另一个上工作? –

回答

4

你想要的语法是:在MySQL

select Name, LastName, Email, 
     concat(Name, LastName, Email) as ThePass 
from student; 

字符串连接功能concat(),不+。并且方括号不被MySQL识别。如果你打算使用它,你应该学习MySQL的基本知识。

+0

MySQL中的字符串连接_could也是'||',如果它在ANSI模式下运行 –

+0

我正在尝试先生。感谢:P – userablaniansda

+0

为了让您的SQL旅程更加有趣,每个数据库引擎都有其怪癖。在Oracle中,您可以使用:Name ||姓氏|| Email作为ThePass – ptrk

1

在MySQL中,列被表示为裸字或带有正向引号。 此外,+运营商不能用于Concat的字符串 - 相反,你可以没有操作员(concatination是隐含的),或显式调用concat功能:

select `Name`, `LastName`, `Email`, `Name` `LastName` `Email` as ThePass from student; 

或者:

select `Name`, `LastName`, `Email`, CONCAT(`Name`, `LastName`, `Email`) as ThePass from student; 
+0

不错,不知道隐式连接 – Phil

+0

是否有一个测试用例演示了“隐式连接”行为?是否有必须禁用或启用SQL_MODE的某些设置才能使其发挥作用? (我以前用字符串文字观察过这种行为,但从来没有用过列标识符。) – spencer7593