2015-12-21 31 views
0

选择,所以我有以下导致错误(对于那些有兴趣的:ORA-00904:“的Bleh”:无效的标识符)样本查询从子查询

select bleh from (
      SELECT MIN(mtb.id) KEEP (DENSE_RANK FIRST ORDER BY mtb.id) "bleh" 
       FROM mytable mtb 
      WHERE mtb.filtered_field_one = 0 
       and mtb.filtered_field_two = 0 
      GROUP BY mtb.foreighn_id, mtb.id 
); 

如果我把它变成(注一与*)取代bleh

select * from (
      SELECT MIN(mtb.id) KEEP (DENSE_RANK FIRST ORDER BY mtb.id) "bleh" 
       FROM mytable mtb 
      WHERE mtb.filtered_field_one = 0 
       and mtb.filtered_field_two = 0 
      GROUP BY mtb.foreighn_id, mtb.id 
); 

我得到的结果完全按照我期望的那样从1日查询,它看起来像命名的Bleh以恰当的值1列。

那么为什么我不能选择该列的名称(别名)?

回答

4

当您用"双引号将名称命名为列时,数据库需要按原样调用它,同时还使用双引号!因此,尝试这样的:即使我说as is我认为,@Stawros提供的评论是一个有价值的信息和平

select bleh from (
     SELECT MIN(mtb.id) KEEP (DENSE_RANK FIRST ORDER BY mtb.id) bleh 
      FROM mytable mtb 
     WHERE mtb.filtered_field_one = 0 
      and mtb.filtered_field_two = 0 
     GROUP BY mtb.foreighn_id, mtb.id 
); 

至于

select "bleh" from (
     SELECT MIN(mtb.id) KEEP (DENSE_RANK FIRST ORDER BY mtb.id) "bleh" 
      FROM mytable mtb 
     WHERE mtb.filtered_field_one = 0 
      and mtb.filtered_field_two = 0 
     GROUP BY mtb.foreighn_id, mtb.id 
); 

还是这样列命名在Oracle:

bleh = BLEH = Bleh 
but 
"bleh" <> "BLEH" <> "Bleh" 
+3

和'bleh' ='bLEH' ='bleh',但' “的Bleh”'<>' “的Bleh”'<>' “的Bleh”' – Stawros

+1

@Stawros你是绝对正确的!这就是为什么我说'原样':) –

+0

@JorgeCampos我其实知道...当...好男人,谢谢:) –