从同一个表/多个列表和项目进行SQL更新
我需要更新如下所示的表:从同一个表/多个列表和项目进行SQL更新,sql,sql-update,Sql,Sql Update,我需要更新如下所示的表: No. Item Location Score Available Price some_more_text 1 Water London 0,00 1 Water Amsterdam 1 yes 1,11 alpha 1 Water Burges
No. Item Location Score Available Price some_more_text
1 Water London 0,00
1 Water Amsterdam 1 yes 1,11 alpha
1 Water Burges 1 yes 1,11 alpha
2 Honey London 0,00
2 Honey Amsterdam 5 yes 5,55 omega
2 Honey Burges 5 yes 5,55 omega
3 Spoon London 4 yes 3,33 gamma
3 Spoon Amsterdam 4 yes 3,33 gamma
3 Spoon Burges 4 yes 3,33 gamma
4 Books London 0,00
4 Books Amsterdam 1 no 2,55 alpha
4 Books Burges 1 no 2,55 alpha
5 Juice London 0,00
5 Juice Amsterdam 5 yes 5,55 beta
5 Juice Burges 5 yes 5,55 beta
...
最后,伦敦的每一件商品都应该与伯格斯或阿姆斯特丹的相应商品具有相同的属性,这无关紧要。
这不能手动完成,因为有这么多-但我找不到一种方法,以某种方式批处理一个SQL命令,以更新具有相同编号的每个项目
还有一个问题:由于它是一个专有软件,我无法确定使用哪种语言,但我假设它是Oracle。您可以在更新中加入表本身
UPDATE table_X lon, table_X bur
SET lon.item=bur.item, lon.score=bur.score, etc
WHERE lon.No=bur.NO AND lon.location="London" AND bur.location="Burges";
如果它实际上是SQL Server,它将使用来自Burges的数据更新伦敦:
update lon
set lon.item = bur.item, lon.score = bur.score, etc
from table_X lon
inner join table_X bur
on lon.No = bur.NO
where lon.location='London' AND bur.location='Burges';
如果您实际使用的是Oracle,则可以使用merge语句,该语句也应与MSSQL配合使用,语法略有不同:
MERGE INTO table1
USING (
SELECT
t2.no t2_no,
t2.score t2_score,
t2.available t2_available,
t2.price t2_price,
t2.some_more_text t2_some_more_text
FROM table1 t1
JOIN table1 t2 ON t1.no = t2.no
WHERE t1.Location='London' AND t2.Location='Burges'
) ON (no = t2_no)
WHEN MATCHED THEN UPDATE
SET score = t2_score,
available = t2_available,
price = t2_price,
some_more_text = t2_some_more_text;
看到样本了吗
Oracle 11g.您如何知道哪个位置具有要复制到其他位置的正确值?或者您只需要修复伦敦,并且您知道Burges总是正确的,这样您就可以使用所有Burges值更新所有伦敦项目?您还可以执行诸如设置lon.item、lon.score等操作=bur.item、bur.score、,我想是个人喜好吧。