SQL meninggalkan gabungan menggunakan klausa mana untuk menapis medan kosong
P粉511985082
2023-08-13 19:06:52
<p>Saya mempunyai dua jadual, satu ialah jadual Pengguna dan satu lagi ialah jadual Token. Saya ingin menyertai kedua-dua jadual ini untuk melihat pengguna yang telah mengesahkan token mereka dan yang tidak. Terdapat kunci asing dalam jadual token yang mengandungi ID pengguna. </p>
<p>Sekarang saya menggunakan gabungan kiri untuk menyertai ID pengguna dan cuba menyemak sama ada tiada pengesahan. Pernyataan pertanyaan adalah seperti berikut: </p>
<pre class="brush:php;toolbar:false;">PILIH nama, disahkan
DARIPADA pengguna LEFT JOIN token
ON users.ID = token.UID
WHERE disahkan = palsu</pre>
<p>Andaikan saya mempunyai dua jadual berikut:</p>
<pre class="brush:php;toolbar:false;">ID |
0 |
1 |
2 |
3 |. John</pre>
<p>Kemudian, jadual token adalah seperti berikut: </p>
<pre class="brush:php;toolbar:false;">ID |
0 |. 1 |
1 |. 2 |
2 |. 3 |.
<p>Seperti yang anda lihat, Joe tidak mempunyai rekod dalam jadual kedua. Saya mahu menyertai kedua-dua jadual ini dan walaupun Joe tidak mempunyai rekod dalam jadual kedua, saya mahu ia dianggap palsu/null. Apabila saya menjalankan pertanyaan untuk mencari pengguna yang tidak disahkan, hanya 2 entri data dikembalikan. </p>
<pre class="brush:php;toolbar:false;">Nama Disahkan
Sally |
Dave |. 0</pra>
<p>Jika saya mengalih keluar klausa where, hasilnya adalah seperti berikut:</p>
<pre class="brush:php;toolbar:false;">Nama Disahkan
Sally |
Dave |
John |
Joe |. NULL</pre>
<p>Seperti yang anda lihat, Joe mempunyai nilai nol di bahagian bawah, tetapi saya mahu ia dianggap sebagai tidak sah. Bagaimanakah saya harus menulis pertanyaan untuk mendapatkan data berikut:</p>
<pre class="brush:php;toolbar:false;">Nama Disahkan
Sally |
Dave |
Joe |. NULL</pre>
<p>Atau hanya pernyataan pertanyaan berikut, hasilnya ialah 3. Hasil pertanyaan semasa ialah 2. </p>
<pre class="brush:php;toolbar:false;">SELECT count(*)
DARIPADA pengguna LEFT JOIN token
ON users.ID = tokens.UID
WHERE disahkan = palsu</pre>
<p><br /></p>