1

何らかの理由で、データベースを変更したいと考えています。

非常に多くのレコードがあるため、これらの値を手動で 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

選択したい場合は、MahmoudGamalの回答のみを参照してください

ただし、値を永続的に変更する場合は、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 に答える
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 に答える
-1

サービスとテスト値の間のスケールに一致する参照テーブルを作成し(以下の例を参照)、参照テーブルの各行に基づいて更新クエリを作成します。

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

このテーブルでselectallを実行し、php、pythonなどの結果を反復処理すると、mysqlクエリの値を動的に置き換えることができます。このアプローチでは、2つの値が他の回答とは対照的に直接相関しないようにすることができます(つまり、サービスはテストのパーセンテージである必要はありません)

于 2012-11-07T14:39:31.223 に答える