gpt4 book ai didi

sql - ORA-00907 缺少右括号问题 - 在插入查询中按顺序选择

转载 作者:行者123 更新时间:2023-12-03 23:24:58 24 4
gpt4 key购买 nike

我正在尝试对表进行插入,它对一列使用一个选择语句。下面是我的查询的说明。

INSERT INTO MY_TBL (MY_COL1, MY_COL2)
VALUES (
(SELECT DATA FROM FIR_TABL WHERE ID = 1 AND ROWNUM = 1 ORDER BY CREATED_ON DESC),
1
);

它抛出 ORA-00907 Missing right Parenthesis .如果我删除 ORDER BY由此,它按预期工作。但我需要订购它。我该如何解决?

最佳答案

当前的两个答案都忽略了使用 order by 的事实。和 rownum在同一个查询中本质上是危险的。绝对不能保证您会获得所需的数据。如果您想要来自有序查询的第一行,您 必须使用子查询:

insert into my_tbl ( col1, col2 )
select data, 'more data'
from ( select data
from fir_tabl
where id = 1
order by created_on desc )
where rownum = 1
;

您还可以使用类似 rank 的函数以您想要的方法对数据进行排序,但如果您有两个 created_on如果日期相同,您最终会得到 2 个值 rnk = 1 .
insert into my_tbl ( col1, col2 )
select data, 'more data'
from ( select data
, rank() over ( order by created_on desc ) as rnk
from fir_tabl
where id = 1)
where rnk = 1
;

关于sql - ORA-00907 缺少右括号问题 - 在插入查询中按顺序选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com