繁体   English   中英

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

[英]How to write SQL statement in this case?

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

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

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

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

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

SQL小提琴演示

如果只想选择,请参见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;

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

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

在此表上运行全选并在诸如php,python等之类的结果中进行迭代,将允许您动态替换mysql查询中的值。 这种方法允许两个值与其他答案没有直接相关性(即:服务不必一定是测试的百分比)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM