缺少 Oracle 查询的表达式
Missing Expression for the Oracle query
我正在尝试 运行 此查询,但我收到 表达式缺失错误 。
SELECT *
FROM (
SELECT ROW_NUMBER() OVER(order by 'rownum') row_num1,
*
FROM A
WHERE refresh_date = (
SELECT max(refresh_date)
FROM A
WHERE upper(flaw_table_name) = upper('B')
)
)
WHERE row_num1 >= 1
AND row_num1 <=20
你能帮帮我吗,我错在哪里了。
SELECT * from (
select ROW_NUMBER() OVER(order by 'rownum') row_num1, * from A
where refresh_date = ( Select max(refresh_date)
from A
where upper(flaw_table_name) = upper('B')
)
) where row_num1>= 1 and row_num1<=20
将最后一个 where 子句替换为 "and",因为查询中已经存在 where
select star 在 Oracle(?) 中无法与其他显式列组合。您需要在子查询中用别名 A 限定星号。
SELECT ROW_NUMBER() OVER(order by 'rownum') row_num1,
A.*
FROM A
这会导致 缺少表达式错误 - 之后您会看到其他错误
您在 order by
子句中有一个常量。此外,首先将 rownum
放在那里是多余的。只需使用 rownum
.
我想你想要:
SELECT A.*
FROM A
WHERE refresh_date = (SELECT max(refresh_date)
FROM A
WHERE upper(flaw_table_name) = upper('B')
) AND
rownum between 1 and 20;
子查询不是必需的,Oracle 足够聪明,可以在WHERE
子句中的其他条件 之后评估rownum
表达式。
您必须添加一个别名,如果您也使用其他别名或函数,则不能在没有名称的情况下使用 *
SELECT *
FROM (SELECT row_number() over(ORDER BY 'rownum') row_num1,
t.*
FROM a t
WHERE refresh_date =
(SELECT MAX(refresh_date)
FROM a
WHERE upper(flaw_table_name) = upper('B')))
WHERE row_num1 >= 1
AND row_num1 <= 20
我正在尝试 运行 此查询,但我收到 表达式缺失错误 。
SELECT *
FROM (
SELECT ROW_NUMBER() OVER(order by 'rownum') row_num1,
*
FROM A
WHERE refresh_date = (
SELECT max(refresh_date)
FROM A
WHERE upper(flaw_table_name) = upper('B')
)
)
WHERE row_num1 >= 1
AND row_num1 <=20
你能帮帮我吗,我错在哪里了。
SELECT * from (
select ROW_NUMBER() OVER(order by 'rownum') row_num1, * from A
where refresh_date = ( Select max(refresh_date)
from A
where upper(flaw_table_name) = upper('B')
)
) where row_num1>= 1 and row_num1<=20
将最后一个 where 子句替换为 "and",因为查询中已经存在 where
select star 在 Oracle(?) 中无法与其他显式列组合。您需要在子查询中用别名 A 限定星号。
SELECT ROW_NUMBER() OVER(order by 'rownum') row_num1,
A.*
FROM A
这会导致 缺少表达式错误 - 之后您会看到其他错误
您在 order by
子句中有一个常量。此外,首先将 rownum
放在那里是多余的。只需使用 rownum
.
我想你想要:
SELECT A.*
FROM A
WHERE refresh_date = (SELECT max(refresh_date)
FROM A
WHERE upper(flaw_table_name) = upper('B')
) AND
rownum between 1 and 20;
子查询不是必需的,Oracle 足够聪明,可以在WHERE
子句中的其他条件 之后评估rownum
表达式。
您必须添加一个别名,如果您也使用其他别名或函数,则不能在没有名称的情况下使用 *
SELECT *
FROM (SELECT row_number() over(ORDER BY 'rownum') row_num1,
t.*
FROM a t
WHERE refresh_date =
(SELECT MAX(refresh_date)
FROM a
WHERE upper(flaw_table_name) = upper('B')))
WHERE row_num1 >= 1
AND row_num1 <= 20