簡體   English   中英

SQL CASE WHEN問題,查詢根本不運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM