在MySQL中找到僅造訪一個城市而不是多個城市的使用者 [duplicate]
P粉764785924
2023-07-24 22:47:07
<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>
請在您的查詢中加入HAVING條件:
如果您需要僅計算唯一城市的數量,您可以使用COUNT(DISTINCT(city))並將其從分組中移除,如下所示: