Sql 基于同一表中的主记录插入缺失的记录
我以前问过几乎相同的问题,但由于sequencer,我不能使用合并语法。问题是,我们在数据库中为人们制定了价格规则。我想为其他应该有相同规则的人同步这些价格规则Sql 基于同一表中的主记录插入缺失的记录,sql,oracle,join,Sql,Oracle,Join,我以前问过几乎相同的问题,但由于sequencer,我不能使用合并语法。问题是,我们在数据库中为人们制定了价格规则。我想为其他应该有相同规则的人同步这些价格规则 +---------------------------+ | id | name | belongs_to_id | |----+------+---------------+ | 1 | A | | | 2 | B | 1 | | 3 | C | 1
+---------------------------+
| id | name | belongs_to_id |
|----+------+---------------+
| 1 | A | |
| 2 | B | 1 |
| 3 | C | 1 |
| 4 | D | |
+----+------+---------------+
好的,现在人们B和C最终需要拥有与用户A相同的价格规则。所以我有一个价格规则表(简化),如下所示:
+-----------------------------------+
| id | user_id | product_id | price |
+----+---------+------------+-------+
| 1 | 1 | 1 | 0.12 |
| 2 | 1 | 2 | 0.10 |
| 3 | 1 | 3 | 0.03 |
| 4 | 2 | 2 | 0.10 |
| 5 | 2 | 3 | 0.10 |
| 6 | 3 | 1 | 0.12 |
| 7 | 3 | 2 | 0.10 |
| 8 | 3 | 3 | 0.03 |
| 9 | 3 | 4 | 0.25 |
+----+---------+------------+-------+
所以在这个例子中,应该发生的是:
- 为用户2提供产品1的价格,价格为0.10
- 将用户2产品3的价格更新为0.03
- 删除用户3、产品4的价格规则
我使用Oracle 10.1专门为用户_id 1插入,我在底部添加了“AND user.belogds_To_id=1”。。正确的记录似乎出现了。
INSERT INTO
priceRule
SELECT
user.id,
parentPriceRule.product_id,
parentPriceRule.price
FROM
user
LEFT JOIN
priceRule AS parentPriceRule
ON parentPriceRule.user_id = user.belongs_to_id
LEFT JOIN
priceRule AS myPriceRule
ON myPriceRule.user_id = user.id
AND myPriceRule.product_id = parentPriceRule.product_id
WHERE
myPriceRule.id IS NULL