テーブルスキーマ:
+----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+---------------+------+-----+---------+-------+
| name | varchar(10) | YES | MUL | NULL | |
| slno | varchar(20) | YES | | NULL | |
| type | int(2) | YES | | NULL | |
| details | text | YES | | NULL | |
+----------------------+---------------+------+-----+---------+-------+
name、slno、type が一緒になってキーを形成します。
サンプルデータ :
+---------+------+------+-------------------------------+
| name | slno | type | details |
+---------+------+------+-------------------------------+
| name1 | 11 | 1 | {"data":["feats1","feats2"] } |
| name1 | 11 | 2 | {"data":["feats1","feats2"] } |
| name1 | 12 | 1 | {"data":["feats5","feats6"] } |
| name1 | 12 | 2 | {"data":["feats5","feats6"] } |
| name2 | 11 | 1 | {"data":["feats3","feats4"] } |
| name2 | 11 | 2 | {"data":["feats3","feats4"] } |
| name2 | 12 | 1 | {"data":["feats7","feats8"] } |
| name2 | 12 | 2 | {"data":["feats10"] } |
+---------+------+------+-------------------------------+
したがって、基本的に、name = 'name1' のすべてのエントリに対して、同じ slno であるが name = 'name2' の同様のエントリがあります。
やりたいことは、slno とタイプが同じで名前が異なる行の詳細を同じに設定することです。つまり、上記のサンプル データ セットは以下のようになります。slno とタイプが同じである場合、name2行の詳細はname1行の詳細と一致する必要があります。
+---------+------+------+-------------------------------+
| name | slno | type | details |
+---------+------+------+-------------------------------+
| name1 | 11 | 1 | {"data":["feats1","feats2"] } |
| name1 | 11 | 2 | {"data":["feats1","feats2"] } |
| name1 | 12 | 1 | {"data":["feats5","feats6"] } |
| name1 | 12 | 2 | {"data":["feats5","feats6"] } |
| name2 | 11 | 1 | {"data":["feats1","feats2"] } |
| name2 | 11 | 2 | {"data":["feats1","feats2"] } |
| name2 | 12 | 1 | {"data":["feats5","feats6"] } |
| name2 | 12 | 2 | {"data":["feats5","feats6"] } |
+---------+------+------+-------------------------------+
やってみましたが、上記の結果を実行するコマンドが思い浮かびませんでした。誰か助けてもらえますか?
要件が name2 の詳細に name1 の詳細からの値を与えることである場合、join
ベースの更新を使用して MySQL でそれを行うことができます。
update yourTable as t1
join yourTable as t2
on t1.slno = t2.slno and
t1.type = t2.type
set t2.details = t1.details
where t2.name = 'name2' and
t1.name = 'name1'
where
句に入れた条件を条件に移動しても、同じことを達成できjoin
ます
update yourTable as t1
join yourTable as t2
on t1.slno = t2.slno and
t1.type = t2.type and
t2.name = 'name2' and
t1.name = 'name1'
set t2.details = t1.details
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加