SQL使用不同的数据和序列填充

Ban*_*ant 5 sql oracle

我的问题如下:

  • 我需要根据汽车租赁实例的信息填充"汽车"表.
  • 我需要创建一个主键'car_id',但仅限于租赁表中的不同注册牌.
  • 我用序列创建car_id.

我尝试了以下代码但收到错误:

--INSERT INTO cars c (c.plate, c.car_id)
SELECT DISTINCT cr.plate, car_id_seq.nextval
FROM cars_rentals cr
;
Run Code Online (Sandbox Code Playgroud)

虽然这样可行(没有明显的登记牌照):

--INSERT INTO cars c (c.plate, c.car_id)
SELECT cr.plate, car_id_seq.nextval
FROM cars_rentals cr
;
Run Code Online (Sandbox Code Playgroud)

(顶行是注释,所以我可以看到我试图直接输出的值)

所以!有谁知道我怎么做; A)获取上述代码以使用DISTINCT或B)找到一种方法来获取序列的MAXVALUE作为注册板的DISTINCT COUNT(所以我可以做两个插入语句)

提前致谢!插口

Ton*_*ews 13

错误是:

ORA-02287:此处不允许使用序列号

这将解决它:

SELECT cr.plate, car_id_seq.nextval
FROM (SELECT DISTINCT plate FROM cars_rentals) cr
Run Code Online (Sandbox Code Playgroud)

  • Bliney!我希望我在工作中得到这种反应;-) (3认同)
  • 托尼,你传奇!我不知道您可以在FROM子句中嵌套子查询:O:O我的世界刚刚被颠倒了。非常感谢!(是的,这是错误,对不起,省略了它) (2认同)