在这种情况下如何编写SQL语句?

时间:2012-11-07 14:35:34

标签: mysql sql

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

SQL Fiddle Demo

答案 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查询中的值。这种方法允许两个值没有直接相关而不是其他答案(即:服务不一定是测试的百分比)