mysql - SQL CASE WHEN 问题,查询根本没有运行

标签 mysql sql case case-when

我有一个用于零售场景的小型数据库,其中有一个名为“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/

相关文章:

mysql - 自动将excel文件加载到mysql中

MySQL INSERT BEFORE TRIGGER 失败?

mysql - 如何从两个外键制作复合 Material ? MySQL

mysql-无法根据数据透视表中的最新日期和时间获取数据

mysql - 我怎样才能做这个关系划分查询?

php - 是否存在 MySQL、PHP、JSON 框架?

sql - mysql 分组删除

sql - 如何在 where 子句中包含列 USER_VIEWS.TEXT

c++ - "A case label may only be used within a switch"

postgresql - 提高 PostgreSQL 中自定义聚合函数的性能