我需要更新一个如下所示的表:
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
...
最后,Londen中的每个项目都应该与Burges(或阿姆斯特丹的相关项目)具有相同的属性,并不重要。 这不能手动完成,因为有很多 - 但我找不到某种方式"批量"一个SQL命令,用于更新具有相同编号的每个项目。
还有一个问题:由于它是一个专有软件,我无法确定使用哪种语言 - 但我认为它是甲骨文。
答案 0 :(得分:0)
您可以在更新中自行加入表格。
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";
用Burges的数据更新伦敦
答案 1 :(得分:0)
如果它实际上是SQL Server:
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';
答案 2 :(得分:0)
如果您实际使用的是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;
请参阅示例SQL Fiddle
Reference documentation for merge(Oracle 11g)。