我有三个表(MySQL):
matches:
___________________________
|match_static_id| team_name |
|_______________|___________|
| 1 | Italy |
| 2 | France |
|_______________|___________|
users:
___________________________
|user_id | username |
|_______________|___________|
| 1 | Dolly |
| 2 | Didi |
|_______________|___________|
forum:
_____________________________________________________________
|match_static_id| comment | timestamp | user_id |
|_______________|___________|______________________|__________|
| 1 | Hi | 2013-07-10 12:15:03 | 2 |
| 1 | Hello | 2013-07-09 12:14:44 | 1 |
|_______________|___________|______________________|__________|
以下查询工作正常(仅使用用户,论坛):
SELECT f1.match_static_id,
f2.comments_no,
f2.maxtimestamp,
users.username
FROM forum AS f1
INNER JOIN
(
SELECT match_static_id,
max(timestamp) maxtimestamp,
count(match_static_id) AS comments_no
FROM forum
GROUP BY match_static_id
) AS f2 ON f1.match_static_id = f2.match_static_id
AND f1.timestamp = f2.maxtimestamp
INNER JOIN users on users.user_id = f1.user_id
Order BY f2.maxtimestamp DESC
但是当我尝试使用此查询查询第三个表中的某些数据时:
SELECT f1.match_static_id,
f2.comments_no,
f2.maxtimestamp,
users.username,
matches.team_name
FROM forum AS f1
INNER JOIN
(
SELECT match_static_id,
max(timestamp) maxtimestamp,
count(match_static_id) AS comments_no
FROM forum
GROUP BY match_static_id
) AS f2 ON f1.match_static_id = f2.match_static_id
AND f1.timestamp = f2.maxtimestamp
INNER JOIN users on users.id = f1.user_id
INNER JOIN matches on matches.match_static_id = f2.match_static_id
Order BY f2.maxtimestamp DESC
结果是重复的(每条记录都是重复的)我不知道为什么我看到一切都好 所以如果有人有任何想法可以帮助我请帮助!!!
答案 0 :(得分:0)
您可能不需要在内部select语句上进行连接。
SELECT
f1.match_static_id,
count(f1.comment) as comments_no,
max(timestamp) as maxtimestamp,
users.username,
matches.team_name
FROM
forum AS f1
INNER JOIN users u on u.id = f1.user_id
INNER JOIN matches m on m.static_id = f1.match_static_id
GROUP BY m.match_static_id
ORDER BY maxtimestamp DESC
答案 1 :(得分:-1)
我想,你想搜索最后一条评论,所以只需按功能分组
GROUP BY f1.match_static_id
SQL小提琴 - 非常有用
并且没有“users.id”列