我的问题如下:

  • 我需要根据实例中的信息填充“汽车”表
    的汽车租赁。
  • 我需要创建一个主键“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(因此我可以执行两个插入语句)

    提前致谢!
    jack

    最佳答案

    错误是:



    这将解决它:

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

    关于SQL使用不同的数据和序列填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7378338/

    10-11 04:46