出于某种原因,我想更改数据库。
由于记录太多,无法逐个手动更改这些值。
请告知如何编写此SQL,谢谢。
自:
id percentage type
1 6 services
1 10 testing
3 8 services
3 20 testing
6 61 services
6 90 testing
要:
id percentage type
1 10 services
1 10 testing
3 20 services
3 20 testing
6 90 services
6 90 testing
答案 0 :(得分:3)
使用相关查询,您可以这样做:
SELECT
t1.id,
(SELECT MAX(t2.percentage)
FROM table1 t2
WHERE t2.id = t1.id) percentage,
type
FROM Table1 t1
答案 1 :(得分:3)
如果您只想选择Mahmoud Gamal's Answer
但是,如果您想永久更改值,请使用UPDATE
UPDATE tableName a
INNER JOIN
(
SELECT id, MAX(percentage) AS maxPercentage
FROM tableName
GROUP BY id
) b ON a.ID = b.ID
SET a.percentage = b.maxPercentage;
答案 2 :(得分:-1)
编写一个引用表以匹配服务和测试值之间的比例(参见下面的示例),然后根据引用表的每一行编写更新查询:
id service_val testing_val
1 6 10
2 8 20
3 61 90
在此表上运行select all并在php,python等内容中迭代结果将允许您动态替换mysql查询中的值。这种方法允许两个值没有直接相关而不是其他答案(即:服务不一定是测试的百分比)