搜尋

首頁  >  問答  >  主體

在MySQL中找到僅造訪一個城市而不是多個城市的使用者 [duplicate]

<p>我有一個包含用戶ID、城市和預訂日期的表格。我需要找出在一個日期範圍內只訪問了一個城市而沒有訪問多個城市的用戶。 </p> <pre class="brush:php;toolbar:false;">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</pre> <table class="s-table"> <thead> <tr> <th>user_id</th> <th>city</th> <th>result</th> </tr> </thead> <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 10和12只造訪了一個城市。例如,使用者ID 11訪問了巴塞隆納兩次。 </p><p>我試過使用NOT EXISTING和INNER JOIN。如何取得只造訪了一個城市的使用者? </p><p><br /></p>
P粉764785924P粉764785924520 天前591

全部回覆(1)我來回復

  • P粉147747637

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

    請在您的查詢中加入HAVING條件:

    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

    如果您需要僅計算唯一城市的數量,您可以使用COUNT(DISTINCT(city))並將其從分組中移除,如下所示:

    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

    回覆
    0
  • 取消回覆