CREATE TABLE t_order (id INT, custId INT, order DATE)
我正在尋找一個SQL命令來選擇每個訂單最多隻能有一個排的(誰擁有了訂單的客戶通過鑑定字段命名爲custId)。
我想選擇ONE如果沒有爲任何行給出的訂單日期,那麼客戶的訂單(無論哪一個,按照ID排序都無關緊要)。
我想檢索客戶ID的空結果,如果存在與給定的順序日期的記錄。
下面是一個例子。每個客戶最多隻能有一個訂單(一個沒有給定日期)。已經有日期值的訂單不應該出現。
+---------------------------------------------------------+ |id | custId | date | +---------------------------------------------------------+ | 1 10 NULL | | 2 11 2008-11-11 | | 3 12 2008-10-23 | | 4 11 NULL | | 5 13 NULL | | 6 13 NULL | +---------------------------------------------------------+ | | | Result \ |/ \/ +---------------------------------------------------------+ |id | custId | date | +---------------------------------------------------------+ | 1 10 NULL | | | | | | | | 5 13 NULL | | | +---------------------------------------------------------+ powered be JavE
編輯: 我選擇glavić的答案正確的,因爲它提供 正確的結果略有修改數據:
+---------------------------------------------------------+ |id | custId | date | +---------------------------------------------------------+ | 1 10 NULL | | 2 11 2008-11-11 | | 3 12 2008-10-23 | | 4 11 NULL | | 5 13 NULL | | 6 13 NULL | | 7 11 NULL | +---------------------------------------------------------+
Sfossen的答案,當客戶出現以上將無法正常工作兩次因爲where子句約束a.id!= b.id.
Quassnoi的答案不適合我的工作,因爲我跑的服務器版本4.0.24這將產生以下錯誤: alt text http://img25.imageshack.us/img25/8186/picture1vyj.png
此表中還有其他哪些列?帶有空日期的custID沒有理由存在? – awithrow 2009-02-27 21:24:12
您是否測試過任何答案以查看它是否適合您? – sfossen 2009-02-27 22:51:06
我測試過了。在給定的數據全部三項工作:@ sfossen的,@ glavic的和我的。 – Quassnoi 2009-02-27 22:53:00