我有这个查询
SELECT DAL_ROWNOTABLE.DAL_ID FROM
(
SELECT ticket.id AS "DAL_ID", ROWNUMBER ( Order By ticket.id ) AS "DAL_ROWNUMBER"
FROM ticket_table ticket
WHERE ( ticket.type = N'I' )
AND
(
ticket.tenant IS NULL OR ticket.tenant IN
(
SELECT * FROM
(
SELECT tenant_group_member.tenant_id
FROM tenant_group_member
WHERE tenant_group_member.tenant_group = HEXTORAW('30B0716FEB5F4E4BB82A7B7AA3A1A42C')
ORDER BY ticket.id
)
)
)
) DAL_ROWNOTABLE
WHERE DAL_ROWNOTABLE.DAL_ROWNUMBER BETWEEN 1 AND 21
允许查询抛出ORA-00936缺少表达式的问题是什么?任何人?任何帮助将不胜感激...错误抛出列:80是在第一顺序的开头:
答案 0 :(得分:2)
ORA-00936通常表示语法错误。
ROWNUMBER
不是Oracle函数。除非您拥有该名称的用户定义函数,否则我怀疑您正在寻找的功能是ROW_NUMBER()
。
答案 1 :(得分:0)
您的查询可以大大简化。它具有额外的子查询层和order by
子查询中不必要的in
之类的内容。您只需使用rownumber
{/ 1>} rownum
即可完成的操作
SELECT DAL_ROWNOTABLE.DAL_ID
FROM (SELECT ticket.id AS "DAL_ID"
FROM ticket_table ticket
WHERE (ticket.type = N'I' ) AND
(ticket.tenant IS NULL OR
ticket.tenant IN (SELECT tgm.tenant_id
FROM tenant_group_member tgm
WHERE tgm.tenant_group = HEXTORAW('30B0716FEB5F4E4BB82A7B7AA3A1A42C')
)
)
ORDER BY ticket.id
) DAL_ROWNOTABLE
WHERE rownum <= 21;