1

出于某种原因,我想更改数据库。

由于记录太多,无法手动更改这些值。

请告知如何编写此 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
4

3 回答 3

3

使用相关查询,您可以这样做:

SELECT 
  t1.id,
  (SELECT MAX(t2.percentage) 
   FROM table1 t2 
   WHERE t2.id = t1.id) percentage,
  type
FROM Table1 t1

SQL 小提琴演示

于 2012-11-07T14:37:25.467 回答
3

如果您只想选择,请查看Mahmoud Gamal 的答案

但是,如果您想永久更改该值,请使用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;
于 2012-11-07T14:39:03.323 回答
-1

编写一个参考表以匹配您的服务和测试值之间的比例(参见下面的示例),然后根据参考表的每一行编写一个更新查询:

id  service_val  testing_val
1       6        10
2       8        20
3       61       90

在此表上运行全选并以 php、python 等方式遍历结果将允许您动态替换 mysql 查询中的值。这种方法允许这两个值与其他答案不具有直接相关性(即:服务不必是测试的百分比)

于 2012-11-07T14:39:31.223 回答