簡體   English   中英

子查詢可以與VALUES關鍵字一起使用嗎?

[英]Can a subquery be used with the VALUES keyword?

我給它留下了印象,但是我遇到了以下兩個示例(使用Oracle XE和SQL Developer):

示例1-執行無錯誤

insert into regions (region_id, region_name)
values ((select max(region_id)+1 from regions), 'Great Britain');

示例2-返回錯誤(如下所示)

insert into regions (region_id, region_name)
values (select region_id, region_name from regions);

錯誤:

Error starting at line 1 in command:
insert into regions (region_id, region_name)
values (select region_id, region_name from regions)
Error at Command Line:2 Column:9
Error report:
SQL Error: ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:

因此,似乎還有更多。 誰能提供在什么條件下可以/不能使用VALUES關鍵字子查詢的解釋?

您需要在括號中插入子查詢。 values的開頭括號不計算在內。 它是列表的開始,而不是子查詢。 當子查詢返回一行和一列時,可以將它們包含在VALUES子句中。

但是,您可以使用以下語法:

insert into regions (region_id, region_name)
    select max(region_id) + 1, 'Great Britain'
    from regions;

最好將一個序列分配給region_id (其他數據庫中的identity或auto-increment列),以便自動分配它。 然后,您將要做:

insert into regions (region_name)
    select 'Great Britain'
    from dual;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM