[英]SQL CASE WHEN issue, Query not running at all
我有一個用於零售業務的小型數據庫,在該數據庫中,我有一個名為“ 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
放反引號:
AS `basket.Dispatched`
CASE WHEN basket.Dispatched = 1 THEN 'Yes' ELSE 'No' END AS 'basket.Dispatched'
您在別名名稱前后缺少單引號。
我在沒有單引號的DEV機器上嘗試了此操作,並且遇到相同的錯誤。
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '.'.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.