まず、あなたは最高の価値をしたいような質問で、ご希望の出力を見ると、それが見えます
mysql> drop database if exists dilyan_kn;
Query OK, 1 row affected (0.04 sec)
mysql> create database dilyan_kn;
Query OK, 1 row affected (0.00 sec)
mysql> use dilyan_kn
Database changed
mysql> create table TBL1
-> (col1 char(1),col2 char(1),col3 int);
Query OK, 0 rows affected (0.11 sec)
mysql> insert into TBL1 values
-> ('A' , 'B' , 1),
-> ('B' , 'C' , 3),
-> ('A' , 'C' , 11),
-> ('A' , 'D' , 13),
-> ('B' , 'D' , 10);
Query OK, 5 rows affected (0.06 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from TBL1;
+------+------+------+
| col1 | col2 | col3 |
+------+------+------+
| A | B | 1 |
| B | C | 3 |
| A | C | 11 |
| A | D | 13 |
| B | D | 10 |
+------+------+------+
5 rows in set (0.00 sec)
mysql>
のは、あなたのサンプル・データをロードしてみましょう任意のcol1のcol3。
例
COL1 = Aの場合、あなたは異なる値1、11を有し、13 13は、COL1 = Bの最高
であり、あなたが異なる値を持つ3と10 10が最高であります
与えられたcol1に対してcol3の最高値を検出するサブクエリが必要です。ここで
そのクエリです:
mysql> SELECT col1,MAX(col3) maxcol3
-> FROM TBL1 GROUP BY col1;
+------+---------+
| col1 | maxcol3 |
+------+---------+
| A | 13 |
| B | 10 |
+------+---------+
2 rows in set (0.00 sec)
mysql>
を副問合せ
SELECT col1,MAX(col3) maxcol3
FROM TBL1 GROUP BY col1;
レッツ・ランさんは、テーブル全体に対してJOINとcol3という列にサブクエリの試合のたびCOL1列を更新するには、この副問合せを使用してみましょう表のcol1列。ここではそのクエリは次のとおりです。
UPDATE
(
SELECT col1,MAX(col3) maxcol3
FROM TBL1 GROUP BY col1
) A
INNER JOIN TBL1 B USING (col1)
SET B.col3 = A.maxcol3;
のは、クエリのJOINそのUPDATEを実行し、熟達しTBL1
のすべて
mysql> UPDATE
-> (
-> SELECT col1,MAX(col3) maxcol3
-> FROM TBL1 GROUP BY col1
->) A
-> INNER JOIN TBL1 B USING (col1)
-> SET B.col3 = A.maxcol3;
Query OK, 3 rows affected (0.05 sec)
Rows matched: 5 Changed: 3 Warnings: 0
mysql> select * from TBL1;
+------+------+------+
| col1 | col2 | col3 |
+------+------+------+
| A | B | 13 |
| B | C | 10 |
| A | C | 13 |
| A | D | 13 |
| B | D | 10 |
+------+------+------+
5 rows in set (0.00 sec)
mysql>
ミッションを選択してみましょう!
(col1、col3)が( 'A'、13)および( 'B'、10)である行が既に最大値を持つという事実から、変更する必要はありません。
このコードは正しく動作します。B whith値10の別のレコードを挿入すると、コードが機能しません。私はすべての一致したレコードを更新したいと思います。 – dido
サンプルセットにはBの値が1つしかないことに注意してください。このため、サンプルデータでは更新されません。 – danihp