Kembalikan baris hanya jika nilai tidak wujud
P粉043470158
2023-08-24 22:07:48
<p>Saya ada 2 jadual - <kod>Tempahan</kod>: </p>
<pre class="brush:php;toolbar:false;">id |
----+------------------
1 |
2|nilai
3 |. nilai</pra>
<p>Jadual kedua - <kod>log_tempahan</kod>: </p>
<pre class="brush:php;toolbar:false;">id reservation_id |
----+----------------+-------------
1 |. 1 |
2 |. 2 |
3 |. 3 |
4 |. 1 |
5 |. 2 |.
<p>Saya hanya perlu memilih tempahan yang tidak dibatalkan (hanya ID 3 dalam kes ini).
Saya boleh memilih "Batal" dengan mudah menggunakan syarat <kod>WHERE change_type = cancel</code> tetapi saya sukar memilih "Jangan batalkan" kerana <kod>WHERE</code> 't bekerja di sini kesan. </p >
Demi kesempurnaan (dan saya sangat percaya ia lebih sesuai), saya menggalakkan anda menggunakan yang mudah
NOT EXISTS
.atau:
Versi pertama lebih intuitif, tetapi saya fikir anda secara umumnya akan mendapat prestasi yang lebih baik dengan versi kedua (dengan mengandaikan anda mempunyai indeks pada lajur yang digunakan dalam gabungan).
Versi kedua berfungsi kerana LEFT JOIN mengembalikan satu baris untuk semua baris dalam jadual pertama. Apabila
ON
条件成功时,这些行将包含第二个表中的列,就像INNER JOIN
一样。当条件失败时,返回的行将包含第二个表中所有列的NULL
。然后,WHERE l.id IS NULL
ujian memadankan baris ini, jadi ia menemui semua baris yang tidak sepadan antara jadual.