【问题标题】:ora-00904 invalid identifierora-00904 无效的标识符
【发布时间】:2011-04-21 03:47:09
【问题描述】:

我的查询有问题...

这个有效:

  select name, bday, address, dbms_random.value(1, 100) as joker
    from employee 
order by joker asc

但是当我尝试使用 'where' 和 group/having 子句获得我想要的东西时,我得到一个 ora-00904(无效标识符)错误..

例如

  select name, bday, address, dbms_random.value(1, 100) as joker 
    from employee 
   where joker>5 
order by joker asc

  select name, bday, address, dbms_random.value(1, 100) as joker
    from employee 
group by name, bday, address 
  having joker > 5 
order by joker asc 

这可能是我的问题,我如何使用百搭列查询?

【问题讨论】:

    标签: sql oracle ora-00904


    【解决方案1】:

    尝试:

    Select * from
    (select name, bday, address, dbms_random.value(1, 100) as joker 
    from employee)
    where joker>5 
    order by joker asc
    

    【讨论】:

    • tnx michael,成功了,你知道这是什么sql格式吗?为什么要这样重新格式化?是因为我得到了新的百搭专栏吗? tnx
    • yup 得到了和 vc74 一样的问题 .. ;(.. 这种查询与 mysql、sqlite.. 等兼容吗?tnx
    • @user415881,如果您将 mysql 的函数 dbms_random.value 替换为 rand(),将 sqlite 的函数替换为 random(),则将起作用
    • @michael ,不是我的意思,你的 sql .. 为什么它是这样形成的,而不是我的 .. 在你使用的 sql 中 .. select * (select * from ??? ) .. 只是想知道为什么要这样做.. ;(
    • @VC 74:这是可行的,因为您可以按表达式排序/分组/过滤,但不能按您在同一查询中给表达式的名称排序/分组/过滤。通过调用 DBMS_RANDOM.VALUE 嵌套查询,别名 JOKER 可用于外部查询中的 ORDER BY 子句。
    【解决方案2】:

    GOOD。这是可行的,因为您可以按表达式排序/分组/过滤,但不能按您在同一查询中为表达式指定的名称排序/分组/过滤。通过使用对 DBMS_RANDOM.VALUE 的调用嵌套查询,别名 JOKER 可用于外部查询中的 ORDER BY 子句。 ——

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2022-01-22
      • 2019-06-29
      • 2013-10-20
      相关资源
      最近更新 更多