cari

Rumah  >  Soal Jawab  >  teks badan

Cari pengguna yang melawati hanya satu bandar dan bukannya berbilang bandar dalam MySQL [pendua]

<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>
P粉764785924P粉764785924484 hari yang lalu568

membalas semua(1)saya akan balas

  • P粉147747637

    P粉1477476372023-07-25 10:55:52

    Sila tambah syarat HAVING pada pertanyaan anda:

    SELECT user_id, city, COUNT(*) as result
    FROM visits 
    WHERE start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00
    AND end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00
    GROUP BY user_id, city
    HAVING result = 1

    Jika anda hanya perlu mengira bilangan bandar unik, anda boleh menggunakan COUNT(DISTINCT(city)) dan mengalih keluarnya daripada kumpulan seperti ini:

    SELECT user_id, city, COUNT(DISTINCT(city)) as result
    FROM visits 
    WHERE start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00
    AND end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00
    GROUP BY user_id
    HAVING result = 1

    balas
    0
  • Batalbalas