2009-08-07 56 views
8

我在SELECT語句中使用我的序列時遇到了一些問題。SQL中的序列選擇

SELECT 
    c.cust_name, 
    c.site, 
    customer_id_seq.nextval  
FROM 
    customer c 
WHERE 
    c.customer_id IS NULL 
ORDER BY 
    c.site_code ASC 
; 

是給我的錯誤:

  1. 00000 - "sequence number not allowed here" *Cause: The specified sequence number (CURRVAL or NEXTVAL) is inappropriate here in the statement. *Action: Remove the sequence number.

這也可能是一些明顯我做錯了,所以希望這將是一個簡單的答案。

+0

這看起來像Oracle。是對的嗎?可能要添加標籤。 – JosephStyons 2009-08-07 14:47:09

回答

14

不能在ORDER BY的查詢中使用序列。

取出ORDER BY或放入到一個子查詢:

SELECT q.*, customer_id_seq.nextval  
FROM (
     SELECT c.cust_name, 
       c.site 
     FROM customer c 
     WHERE c.customer_id IS NULL 
     ORDER BY 
       c.site_code ASC 
     ) q 
+2

這是正確的和限制之一。如果要按特定順序爲記錄提取序列,請將查詢(按順序排列)移入內聯視圖,然後從該 – 2009-08-07 14:52:52

+0

'@ ChrisCM'中選擇內容+序列:添加。謝謝。 – Quassnoi 2009-08-07 15:08:53

+0

感謝您對這個傢伙的幫助,感謝您。 – fras85 2009-08-07 15:24:02

1

IBM Imformix

在SELECT語句,你不能在以下上下文中指定NEXTVAL或CURRVAL:當DISTINCT關鍵字用來

  • 在WHERE

    • 在投影列表, GROUP BY或ORDER BY子句
    • 在子查詢中
    • 當UNION操作ator結合SELECT語句
  • 1

    你爲什麼不使用的rownum,而不是從序列讀取值?

    +0

    是的,我想知道他爲什麼在這裏使用序列。似乎並不合適...... – 2009-08-09 10:46:31

    +0

    數據庫中的大多數客戶已經擁有ID,所以我需要從該號碼開始繼續。我將這些結果插入到另一個表中。 再次感謝。 – fras85 2009-08-09 18:51:58