Cari pengguna yang melawati hanya satu bandar dan bukannya berbilang bandar dalam MySQL [pendua]
P粉764785924
2023-07-24 22:47:07
<p>Saya mempunyai jadual dengan ID pengguna, bandar dan tarikh tempahan. Saya perlu mengetahui pengguna yang melawat hanya satu bandar dan bukan beberapa bandar dalam julat tarikh. </p>
<pre class="brush:php;toolbar:false;">SELECT
ID Pengguna,
bandar,
COUNT(*) sebagai hasilnya
DARIPADA lawatan
WHERE start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00
DAN end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00
KUMPULAN MENGIKUT user_id, city</pre>
<table class="s-table">
<kepala>
<tr>
<th>user_id</th>
<th>city</th>
<th>hasil</th>
</tr>
</kepala>
<tbody>
<tr>
<td>10</td>
<td>Munich</td>
<td>1</td>
</tr>
<tr>
<td>11</td>
<td>Barcelona</td>
<td>2</td>
</tr>
<tr>
<td>11</td>
<td>Berlin</td>
<td>1</td>
</tr>
<tr>
<td>12</td>
<td>Barcelona</td>
<td>1</td>
</tr>
<tr>
<td>13</td>
<td>Prague</td>
<td>2</td>
</tr>
<tr>
<td>11</td>
<td>Barcelona</td>
<td>1</td>
</tr>
<tr>
<td>13</td>
<td>Berlin</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>ID Pengguna 10 dan 12 hanya melawat satu bandar. Contohnya, ID pengguna 11 melawat Barcelona dua kali. </p><p>Saya telah mencuba menggunakan NOT EXISTING dan INNER JOIN. Bagaimana untuk mendapatkan pengguna yang hanya melawat satu bandar? </p><p><br /></p>
Sila tambah syarat HAVING pada pertanyaan anda:
Jika anda hanya perlu mengira bilangan bandar unik, anda boleh menggunakan COUNT(DISTINCT(city)) dan mengalih keluarnya daripada kumpulan seperti ini: