Cara untuk mengemas kini keseluruhan lajur menggunakan indeks baris dan nilai berkod keras dalam Mysql
P粉362071992
2023-08-26 15:24:30
<p>Saya ingin mengemas kini keseluruhan lajur <strong>e-mel</strong> menggunakan format indeks baris + email@gmail.com. </p>
<p>Ini ialah data dalam jadual saya</p>
<table class="s-table">
<kepala>
<tr>
<th>id</th>
<th>E-mel</th>
</tr>
</kepala>
<tbody>
<tr>
<td>12</td>
<td>abc@gmail.com</td>
</tr>
<tr>
<td>23</td>
<td>pqr@gmail.com</td>
</tr>
</tbody>
</table>
<p>Ini adalah output yang saya mahu</p>
<table class="s-table">
<kepala>
<tr>
<th>id</th>
<th>E-mel</th>
</tr>
</kepala>
<tbody>
<tr>
<td>12</td>
<td>1email@gmail.com</td>
</tr>
<tr>
<td>23</td>
<td>2email@gmail.com</td>
</tr>
</tbody>
</table>
<p>Saya mencuba pertanyaan di bawah tetapi tidak mendapat output yang saya jangkakan. </p>
<pre class="brush:php;toolbar:false;">;dengan C sebagai
(
pilih e-mel,row_number() over(order by id asc) sebagai rowid
daripada cus
)
kemas kini C
tetapkan e-mel = rowid+'email@gmail.com'</pre>
<p>Itu bukan hanya 3 baris, saya mempunyai lebih 500 baris dalam jadual <kod>cus</code> Adalah lebih baik jika seseorang boleh memberi saya penyelesaian yang tidak memerlukan gelung. Tolong bantu saya membuat pertanyaan SQL. Terima kasih. </p>
Ini nampaknya berkesan, tetapi saya percaya ada penyelesaian yang lebih elegan yang tidak memerlukan penggunaan join...
Ujian Penuh
Mungkin ini yang anda mahu lakukan:
Sambungkan jadual (
cus
)与C
的cte
) yang anda ingin kemas kini, dan kemudian kemas kini dengan sewajarnya.Berikut ialah demo
@QisM memang bukan unik untuk
email
不唯一时的语法提出了疑虑,由于OP没有提到,我同意如果email
, ini bukan penyelesaiannya. Jadi saya mengubah suai sedikit sintaks:Semak sekarang
cte
带有id
,并且在JOIN C ON ..
条件中,我添加了匹配id
. Selepas ujian, ini akan membetulkan isu jika e-mel itu bukan unik.