我有一張表,例如pricerules,爲顧客儲存特價物品。現在我想基於其他用戶同步這些pricerules。假設我有這樣的數據集:根據同一表中的'主'記錄在表中插入記錄
+---------------------------+
| user_id | prod_id | price |
+---------+---------+-------+
| 10 | 1 | 1 |
| 10 | 2 | 5 |
| 10 | 3 | 7 |
| 20 | 2 | 5 |
| 30 | 2 | 5 |
| 30 | 3 | 7 |
+---------+---------+-------+
現在我想基於對用戶10.我已經寫了刪除和更新查詢價格更新/插入價格等幾個用戶,但我插入查詢插入其他用戶還沒有的新規則。
所以有效,這將做以下插入:
INSERT INTO pricerules
(user_id, prod_id, price)
VALUES
(20, 1, 1),
(20, 3, 7),
(30, 1, 1);
有沒有辦法在一個查詢中這樣做嗎?我一直在尋找MINUS
來選擇用戶20不存在的記錄,但我將不得不爲每個用戶執行一個查詢。
我想也許我可以使用MERGE
。
我使用的是Oracle 10.1 ..
OP已經要求它基於用戶10的價格,所以也許你需要添加到subqry t1',其中user_id <> 10'和subqry t2'where user_id = 10' – 2012-03-20 14:12:41
@ABCade謝謝!我錯過了。我已經更新了我的答案。 – 2012-03-20 14:32:21
不幸的是,當您還需要使用序列(使用seq.nextval)插入主鍵時,此方法看起來效果不佳。序列總是會加1。 – rolandow 2012-04-26 12:12:20