2012-08-29 70 views
0

我在MySQL工作臺中執行此SQL語句時遇到了問題。任何人都可以爲我指出問題嗎?帶有別名的MySQL查詢中的SQL錯誤(AS)

SELECT concat(LocationName,' - ', StationName) AS LocationStation, EmpName AS '0000-0100', EmpName AS '0100-0200', EmpName AS '0200-0300', EmpName AS '0300-0400', EmpName AS '0400-0500', EmpName AS '0500-0600', EmpName AS '0600-0700', EmpName AS '0700-0800', EmpName AS '0800-0900', EmpName AS '0900-1000', EmpName AS '1000-1100', EmpName AS '1100-1200', FROM satsschema.employeeslot 
WHERE LocationName = 'T2 PML' 
and AllocationDate = '10-Aug' 
and (EmpTime >= '00:00:00' and EmpTime <= '12:00:00') 

以上statemnt提示我這個錯誤,「你在你的SQL語法錯誤,請檢查對應於你的MySQL服務器版本使用整齊「FROM satsschema.employeeslot正確的語法手冊WHERE LOCATIONNAME = 'T2 PML'和AllocationDate ='在第1行。「

其次,除了打字外,還有其他什麼方法可以縮短這一行嗎?

EmpName AS '0000-0100', EmpName AS '0100-0200', EmpName AS '0200-0300', EmpName AS '0300-0400', EmpName AS '0400-0500', EmpName AS '0500-0600', EmpName AS '0600-0700', EmpName AS '0700-0800', EmpName AS '0800-0900', EmpName AS '0900-1000', EmpName AS '1000-1100', EmpName AS '1100-1200', FROM satsschema.employeeslot 

幫助將不勝感激。

+1

嘗試刪除'FROM'之前',' – Kuf

+0

給一個列提供多個別名有什麼意義? –

+0

1小時休息時間表示標題,裏面的值將是在時間段內工作的員工。 – Philemon

回答

1

刪除FROM之前的逗號。它會導致錯誤。

SELECT concat(LocationName,' - ', StationName) AS LocationStation, EmpName AS '0000-0100', EmpName AS '0100-0200', EmpName AS '0200-0300', EmpName AS '0300-0400', EmpName AS '0400-0500', EmpName AS '0500-0600', EmpName AS '0600-0700', EmpName AS '0700-0800', EmpName AS '0800-0900', EmpName AS '0900-1000', EmpName AS '1000-1100', EmpName AS '1100-1200' FROM satsschema.employeeslot 
WHERE LocationName = 'T2 PML' 
and AllocationDate = '10-Aug' 
and (EmpTime >= '00:00:00' and EmpTime <= '12:00:00') 

請注意,錯誤消息確切地說錯誤在哪裏。

在MySQL中,AS關鍵字對於列別名是可選的,因此您可以寫EmpName '0000-0100'來代替EmpName AS '0000-0100'。我不認爲有一個簡短的解決方案可以爲一列提供多個別名,因爲這實際上不是經常需要的。

+0

是的,我明白,但在這種情況下給予更多然後1個別名是讓用戶知道哪些員工屬於這個時間段。這就像一個時間表。 – Philemon

0

刪除from條款之前的額外comma

SELECT concat(LocationName,' - ', StationName) AS LocationStation, 
     EmpName AS '0000-0100', 
     EmpName AS '0100-0200', 
     EmpName AS '0200-0300', 
     EmpName AS '0300-0400', 
     EmpName AS '0400-0500', 
     EmpName AS '0500-0600', 
     EmpName AS '0600-0700', 
     EmpName AS '0700-0800', 
     EmpName AS '0800-0900', 
     EmpName AS '0900-1000', 
     EmpName AS '1000-1100', 
     EmpName AS '1100-1200' -- remove comma here 
FROM satsschema.employeeslot 
WHERE LocationName = 'T2 PML' 
and AllocationDate = '10-Aug' 
and (EmpTime >= '00:00:00' and EmpTime <= '12:00:00')