我在 CONCAT 上的 SQL 代码有什么问题?
What is wrong with my SQL code on CONCAT?
CREATE VIEW ‘CustomerView’ AS SELECT
FROM ‘Customer’
ORDER BY ‘CustomerID’, CONCAT(‘FirstName,’ ‘ ’, ‘LastName’) AS ‘CustomerName’, ‘StreetAddress’, ‘Apt’, ‘City’, ‘State’, ‘ZipCode’, ‘HomePhone’, ‘MobilePhone’, ‘OtherPhone’
;
我收到此错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ‘Customer’ ORDER BY ‘CustomerID’, CONCAT(‘FirstName,’ ‘ ’, ' at line 2
你漏了一个逗号
ORDER BY ‘CustomerID’, CONCAT(‘FirstName,’, ‘ ’, ‘LastName’) AS .....
另一种更简单的写法是在 Firstname
之后添加 space:
ORDER BY ‘CustomerID’, CONCAT(‘FirstName, ’, ‘LastName’) AS .....
update
另外:
CREATE VIEW ‘CustomerView’ AS SELECT **"......"**
你没有说你想要select哪些列,如果你想select所有列,只需添加*
CREATE VIEW CustomerView AS
SELECT CONCAT(FirstName, ' ', LastName) AS CustomerName,
...
...
FROM `Customer`
ORDER BY `CustomerID`;
您似乎在 table 和列标识符周围使用了智能引号。你不应该在代码中使用智能引号。没有使用这些字符的编码语言。
您也不会在标识符周围使用单引号。 MySQL 默认使用反引号作为标识符。单引号用于 SQL.
中的字符串文字或日期文字
反引号如下所示:
``
单引号看起来像这样:
''
此外,您似乎已将列放在 ORDER BY 子句之后。我认为你需要学习 SELECT.
的语法
我还看到您的 CONCAT() 中有一个错误。当它应该在引号之外时,引号内有一个逗号。你有这个:
CONCAT(‘FirstName,’ ‘ ’, ‘LastName’)
应该是这样的:
CONCAT(`FirstName`, ' ', `LastName`)
你会这样写视图:
CREATE VIEW `CustomerView` AS
SELECT CONCAT(`FirstName`, ' ', `LastName`) AS `CustomerName`,
`StreetAddress`,
`Apt`,
`City`,
`State`,
`ZipCode`,
`HomePhone`,
`MobilePhone`,
`OtherPhone`
FROM `Customer`
ORDER BY `CustomerID`;
反引号在您的示例中是可选的。如果您的标识符与 SQL 保留字冲突,或者如果标识符包含空格或特殊字符(标点符号、国际符号等),则需要它们。 None 这些情况适用于您的示例。所以你可以不用反引号写它:
CREATE VIEW CustomerView AS
SELECT CONCAT(FirstName, ' ', LastName) AS CustomerName,
StreetAddress,
Apt,
City,
State,
ZipCode,
HomePhone,
MobilePhone,
OtherPhone
FROM Customer
ORDER BY CustomerID;
CREATE VIEW ‘CustomerView’ AS SELECT
FROM ‘Customer’
ORDER BY ‘CustomerID’, CONCAT(‘FirstName,’ ‘ ’, ‘LastName’) AS ‘CustomerName’, ‘StreetAddress’, ‘Apt’, ‘City’, ‘State’, ‘ZipCode’, ‘HomePhone’, ‘MobilePhone’, ‘OtherPhone’
;
我收到此错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ‘Customer’ ORDER BY ‘CustomerID’, CONCAT(‘FirstName,’ ‘ ’, ' at line 2
你漏了一个逗号
ORDER BY ‘CustomerID’, CONCAT(‘FirstName,’, ‘ ’, ‘LastName’) AS .....
另一种更简单的写法是在 Firstname
之后添加 space:
ORDER BY ‘CustomerID’, CONCAT(‘FirstName, ’, ‘LastName’) AS .....
update
另外:
CREATE VIEW ‘CustomerView’ AS SELECT **"......"**
你没有说你想要select哪些列,如果你想select所有列,只需添加*
CREATE VIEW CustomerView AS
SELECT CONCAT(FirstName, ' ', LastName) AS CustomerName,
...
...
FROM `Customer`
ORDER BY `CustomerID`;
您似乎在 table 和列标识符周围使用了智能引号。你不应该在代码中使用智能引号。没有使用这些字符的编码语言。
您也不会在标识符周围使用单引号。 MySQL 默认使用反引号作为标识符。单引号用于 SQL.
中的字符串文字或日期文字反引号如下所示:
``
单引号看起来像这样:
''
此外,您似乎已将列放在 ORDER BY 子句之后。我认为你需要学习 SELECT.
的语法我还看到您的 CONCAT() 中有一个错误。当它应该在引号之外时,引号内有一个逗号。你有这个:
CONCAT(‘FirstName,’ ‘ ’, ‘LastName’)
应该是这样的:
CONCAT(`FirstName`, ' ', `LastName`)
你会这样写视图:
CREATE VIEW `CustomerView` AS
SELECT CONCAT(`FirstName`, ' ', `LastName`) AS `CustomerName`,
`StreetAddress`,
`Apt`,
`City`,
`State`,
`ZipCode`,
`HomePhone`,
`MobilePhone`,
`OtherPhone`
FROM `Customer`
ORDER BY `CustomerID`;
反引号在您的示例中是可选的。如果您的标识符与 SQL 保留字冲突,或者如果标识符包含空格或特殊字符(标点符号、国际符号等),则需要它们。 None 这些情况适用于您的示例。所以你可以不用反引号写它:
CREATE VIEW CustomerView AS
SELECT CONCAT(FirstName, ' ', LastName) AS CustomerName,
StreetAddress,
Apt,
City,
State,
ZipCode,
HomePhone,
MobilePhone,
OtherPhone
FROM Customer
ORDER BY CustomerID;