2010-11-08 126 views
1

我有這樣的條款:SQL:子句新手語法錯誤

"Select * 
From 
(
    Select sedi_i18n.*, 
    0 orden 
    From table sedi_i18n 
    Where culture= 'italiano' 
    Union 
    Select sedi_i18n.*, 1 orden 
    From table sedi_i18n 
    Where culture<> 'italiano' 
) 
Order By orden, culture"; 

但我發現了這個錯誤:

SQLSTATE[42000]: Syntax error or access violation: 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 'table sedi_i18n Where culture= 'italiano' Union Select sedi_i18n.*, 1 or' at line 6

任何想法?

問候

哈維

回答

2

你需要你的括號後的子查詢的別名,並刪除該單詞表 - 就像這樣:

Select * 
From 
(
    Select sedi_i18n.*, 
    0 orden 
    From sedi_i18n 
    Where culture= 'italiano' 
    Union 
    Select sedi_i18n.*, 1 orden 
    From sedi_i18n 
    Where culture<> 'italiano' 
) SQ 
Order By orden, culture; 
0
0 orden 

需要被

0 , orden 

1 orden 

1, orden 

也解決@Stiivi此言

同樣的問題
0

乍一看,這看起來像一個問題:

From table sedi_i18n 

應該是:

From sedi_i18n 

(沒有 '表' 的字)

同第6行和第10行。

0

你是否在你的陳述中需要單詞「table」?我建議把工會拿出來,沒有它看看你得到了什麼。分解它,看看你的真實錯誤在哪裏。

0

在您的查詢中刪除單詞「表」。也是內部查詢的別名。

"Select * 
From 
(
    Select sedi_i18n.*, 
    0 orden 
    From sedi_i18n 
    Where culture= 'italiano' 
    Union 
    Select sedi_i18n.*, 1 orden 
    From sedi_i18n 
    Where culture<> 'italiano' 
) a 
Order By orden, culture";