2011-09-11 22 views
5

我的問題是填充如下:SQL用不同的數據和序列

  • 我需要根據從實例汽車的租金 信息來填充「汽車」表。
  • 我需要創建一個主鍵「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(所以我可以做兩個插入語句)

在此先感謝! 傑克

+0

推測錯誤是'ORA-02287:不允許序列號here'?這通常是最好的說法。 –

回答

10

的錯誤是:

ORA-02287: sequence number not allowed here

這將解決這個問題:

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

託尼你的傳奇!我不知道你可以在FROM子句中嵌套子查詢:O:O我的世界剛剛顛倒過來。非常感謝! (是的,這是錯誤,遺憾的是遺漏了它) – Bant

+3

Bliney!我希望在工作中得到這種反應;-) –

-1

試試這個

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

感謝您的建議,但這不起作用,我害怕,因爲我不認爲你可以從序列中獲得最大價值!歡呼tho – Bant

+0

嘗試投射整數序列 – Sparky

相關問題