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

时间:2011-09-11 12:59:42

标签: 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
;

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

--INSERT INTO cars c (c.plate, c.car_id)
SELECT cr.plate, car_id_seq.nextval
FROM cars_rentals cr
;

(顶行被评论,所以我可以看到我试图直接输出的值)

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

提前致谢! 千斤顶

2 个答案:

答案 0 :(得分:11)

错误是:

  

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

这将解决它:

SELECT cr.plate, car_id_seq.nextval
FROM (SELECT DISTINCT plate FROM cars_rentals) cr

答案 1 :(得分:-1)

试试这个

select cr.plate,max(car_id_seq.nextval)
from car_rentals cr
group by cr.plate