我有一个用于零售业务的小型数据库,在此数据库中,我有一个名为“ Dispatched”的字段,该字段用于指示商品是否已发货。当然这是1和0,我尝试了一种简单的情况,使1显示为Yes,0显示为No。

我的完整查询是:

SELECT
orders.OrdersID,
stock.ItemName,
basket.Quantity,
customer.FirstName,
customer.LastName,
address.AddressLine1,
address.AddressLine2,
address.TownOrCity,
address.Postcode,
address.Country,
CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END AS basket.Dispatched
FROM orders
JOIN OrdersBasketJoin ON orders.OrdersID = OrdersBasketJoin.OrdersID
LEFT JOIN basket ON OrdersBasketJoin.BasketID = basket.BasketID
JOIN customer ON orders.CustomerID = customer.CustomerID
JOIN address ON orders.DeliveryAddress = address.AddressID
JOIN stock ON basket.StockID = stock.StockID
ORDER BY  `customer`.`CustomerID` ASC
LIMIT 0 , 30


该查询在没有CASE WHEN的情况下工作正常,并且在正常选择Dispatched时将显示1和0,而在引用Dispatched时WHERE可以正常工作。

但是当我尝试添加

CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END AS basket.Dispatched


我得到错误

#1064 - 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 '.Dispatched FROM orders JOIN OrdersBasketJoin ON orders.OrdersID = Ord' at line 12


根据我的研究,这几乎就像一个案例一样简单,并且我认为语法是正确的。

不知道它是否只是一个视觉错误,但是CASE中的“ END”不会像已知的功能那样亮起,而JOIN,ON,LEFT等全部亮起,无论END在何处都不亮。

任何和所有帮助都非常感激-汤姆

最佳答案

您在,之后缺少address.Country,因此遇到语法错误,请尝试此操作

SELECT
orders.OrdersID,
stock.ItemName,
basket.Quantity,
customer.FirstName,
customer.LastName,
address.AddressLine1,
address.AddressLine2,
address.TownOrCity,
address.Postcode,
address.Country,
(CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END) AS `basket.Dispatched`
FROM orders
JOIN OrdersBasketJoin ON orders.OrdersID = OrdersBasketJoin.OrdersID
LEFT JOIN basket ON OrdersBasketJoin.BasketID = basket.BasketID
JOIN customer ON orders.CustomerID = customer.CustomerID
JOIN address ON orders.DeliveryAddress = address.AddressID
JOIN stock ON basket.StockID = stock.StockID
ORDER BY  `customer`.`CustomerID` ASC
LIMIT 0 , 30

07-24 18:56
查看更多