我有一个用于零售场景的小型数据库,其中有一个名为“Dispatched”的字段,它是一个 bool 值,指示商品是否已发货。这当然是 1 和 0,我尝试了一个简单的 CASE WHEN 使 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 在哪里吨。
非常感谢任何帮助 -Tom
最佳答案
您在 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
关于mysql - SQL CASE WHEN 问题,查询根本没有运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273478/