0

我不知道这个查询有什么问题。这对我来说似乎很好。

select o.id, p.date, u.billingName, u.billingPhone, u.billingCompany,
       u.billingAddress, u.billingCity, u.billingState, u.billingCountry,
       u.billingZip, u.shippingName, u.shippingPhone, u.shippingCompany,
       u.shippingAddress, u.shippingCity, u.shippingState, u.shippingCountry,
       u.shippingZip, o.layer, o.boardSizeWidth,o.boardSizeHeight, o.quantity
from order o, purchase p, useraccount u
where p.id = 1 and o.id = p.OrderId and u.id = p.UserId 

错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“order o, purchase p, useraccount u where p.id = 1 and o.id = p.OrderId and u.id”附近使用正确的语法

4

2 回答 2

4

该表order是一个保留字,需要使用反引号进行转义。

此外,在加入表格时,您应该使用标准的 ANSI JOIN 语法。请参阅下文了解如何完成此操作。

select ....
from `order` o
inner join purchase p
    on o.id = p.OrderId
inner join useraccount u 
    on u.id = p.UserId
where p.id = 1

作为旁注,您应该避免对表名和列名使用保留字。

于 2013-04-08T15:10:04.060 回答
0

ORDER是保留关键字。必须使用反引号进行转义。

....FROM `Order` o

如果您有机会更改标识符,请更改保留关键字列表中不存在的表名。这将避免你未来的头痛。

于 2013-04-08T15:08:05.247 回答