行を更新するときに列ではなく更新クエリで結合を使用する
P粉170438285
2023-08-02 12:32:01
<p>更新之前(原始示例表):</p>
<table class="s-table">
<thead>
<tr>
<th>document_id</th>
<th>meta_key</th>
<th>meta_value</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>iban</td>
<td>IBAN123456</td>
</tr>
<tr>
<td>1</td>
<td>bankaccount</td>
<td>ACCT987654</td>
</tr>
<tr>
<td>2</td>
<td>iban</td>
<td>IBAN555555</td>
</tr>
<tr>
<td>2</td>
<td>bankaccount</td>
<td>ACCT444444</td>
</tr>
<tr>
<td>3</td>
<td>iban</td>
<td>IBAN888888</td>
</tr>
<tr>
<td>3</td>
<td>bankaccount</td>
<td>ACCT333333</td>
</tr>
</tbody>
</table>
<p>运行SQL更新查询后:</p>
<table class="s-table">
<thead>
<tr>
<th>document_id</th>
<th>meta_key</th>
<th>meta_value</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>iban</td>
<td>IBAN123456</td>
</tr>
<tr>
<td>1</td>
<td>bankaccount</td>
<td>IBAN123456</td>
</tr>
<tr>
<td>2</td>
<td>iban</td>
<td>IBAN555555</td>
</tr>
<tr>
<td>2</td>
<td>bankaccount</td>
<td>IBAN555555</td>
</tr>
<tr>
<td>3</td>
<td>iban</td>
<td>IBAN888888</td>
</tr>
<tr>
<td>3</td>
<td>bankaccount</td>
<td>IBAN888888</td>
</tr>
</tbody>
</table>
<p>我需要一个查询来实现上述表格的结果吗?</p>
document_id
、meta_key
、およびmeta_value
。meta_key がbankaccount である行のmeta_value を、meta_key が iban である行に更新します。対応するメタ値。次は、この目標を達成するための SQL クエリです:
リーリー#p1 テーブルは example_table のエイリアスであり、p2 はサブクエリのエイリアスです。- meta_key が 'iban' の場合、サブクエリは document_id と meta_value を選択します
- p1 とサブクエリ p2 の間の document_id を照合するためにメイン クエリ INNER JOIN によって使用されます。
- 次に、p1 のメタキーが「bankaccount」であるメタ値を、p2 の iban に更新します。
-
更新クエリを実行する前に、必ずデータベースをバックアップし、安全な環境でテストしてください。