2010-11-08 122 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";