2013-05-10 23 views
1

我的数据库跟踪部分用户已经完成:MySQL:每组另一个最大值?两个表

表 '用户':

id user_id sections_id 
// 
4   46    1 
5   46    2 
6   46    4 
7   46    5 
// 

表 '节':

id header_id name 
1   1  1/3 
2   1  2/3 
3   1  3/3 
4   2  1/3 
5   2  2/3 
6   2  3/3 

下面的查询

SELECT a.sections_id 
     ,b.header_id 
FROM users a 
JOIN sections b 
ON a.sections_id = b.id 
WHERE a.user_id = 46; 
// a.user_id can be just user_id, but added for clarity 

给我:

sections_id header_id 
      1   1 
      2   1 
      4   2 
      5   2 

我想是每头最大部分ID为特定的用户,这样我才知道我需要为用户服务,其部分:

sections_id header_id 
      2   1 
      5   2 

我假设这是每个组中最大问题,但我不能很好地解决问题。我可以将所有的数据放入我的PHP并从那里解析出来,但似乎我应该可以通过SQL来完成。 TIA!

回答

1

这是一个简单group by查询:

SELECT s.header_id, max(u.sections_id) 
FROM users u JOIN 
    sections s 
    ON u.sections_id = s.id 
WHERE u.user_id = 46 
group by s.header_id; 

我也改变了你的别名是表的缩写。这使查询更容易遵循。

编辑:SQLFiddle这里:http://sqlfiddle.com/#!2/dbb5a/2

1

您可以通过子句与MAX()函数

SELECT max(a.sections_id) 
     ,b.header_id 
FROM users a 
JOIN sections b 
ON a.sections_id = b.id 
WHERE a.user_id = 46 
GROUP BY header_id; 
+0

马斯亮添加组。多谢你们! – Ragamffn 2013-05-10 03:15:34

相关问题