私のmysqlテーブルは次のようなものです:
+---------+---------+------------+-----------------------+---------------------+
| visitId | userId | locationId | comments | time |
+---------+---------+------------+-----------------------+---------------------+
| 1 | 3 | 12 | It's a good day here! | 2012-12-12 11:50:12 |
+---------+---------+------------+-----------------------+---------------------+
| 2 | 3 | 23 | very beautiful | 2012-12-12 12:50:12 |
+---------+---------+------------+-----------------------+---------------------+
| 3 | 3 | 52 | nice | 2012-12-12 13:50:12 |
+---------+---------+------------+-----------------------+---------------------+
魔女は訪問者の軌跡と訪問した場所に関するいくつかのコメントを記録します
カウントだけでなく、特定の日と場所とともに、1日に複数の場所を訪れた訪問者を見つけたいと思います。
サブクエリを試しました:
mysql> SELECT userId, locationId, time FROM visits
WHERE (userId,DATE(time)) in (
SELECT userNum, Date(weiboTime) from visits GROUP BY userNum, Date(wei
boTime) Having COUNT(*)>1);
そして共同クエリ:
mysql> select v2.userId, v1.loacationId, v1.time from visits as v1, visits as
v2 where v1.userId=v2.userId GROUP BY v2.userId, Date(v2.time) HAVING
COUNT(DISTINCT v2.locationId);
2つ目が正しいかどうかわかりません。しかし、どちらも時間がかかりすぎます。私は何をすべきかについての提案はありますか?
アップデート
mysql> SELECT t.userId, locationId, t.time FROM (
SELECT userId, time
FROM visits GROUP BY userId,Date(time)
HAVING COUNT(*) > 1) AS t, visits
WHERE t.userId=visits.userId AND t.time=visits.time;
これが私自身をより明確にすることを願っています。