-1

我有一个注册和登录站点,人们可以在其中单击表单上的保存进度,并在第 2 列中插入一个新行,其会话 ID 为 (user_id)。

我也有一个管理员登录,我可以在其中看到他们的条目,但它显示了他们所有保存的列表。

我想知道您是否可以帮我找出一个查询来列出每个唯一人员的所有最新保存进度?喜欢 (id,user_id,name,score): (3,3,bob, score 5) (6,4,sam, score 30) 不显示用户过去保存的所有存档,例如: (1,3,bob, score 5) (2,4,sam, score 30) (3,3,bob, score 5) (4,4,sam, score 30) 我需要每个用户的最新存档。

就像 user_id 的不同列表的最新 id。希望这是有道理的。谢谢!

4

2 回答 2

1
select user_id,name,score from your_table where (user_id,id) in (select user_id,max(id) from your_table group by user_id) 
于 2012-12-02T01:01:57.633 回答
0

考虑以下表格的格式

 CREATE TABLE IF NOT EXISTS `user` (`user_id` int(11) NOT NULL auto_increment,
 `user_name` varchar(200) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`user_id`)
  ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;

 CREATE TABLE IF NOT EXISTS `user_score` (
 `id` int(11) NOT NULL auto_increment,
  `user_id` int(11) NOT NULL,
  `user_score` int(11) NOT NULL,
   PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;

请尝试执行以下 sql 选择查询以检索每个用户的最新分数

SELECT u . * ,s.user_score,s.id  FROM user u JOIN user_score s ON u.user_id =  s.user_id   WHERE id  IN (SELECT MAX( id )  FROM user_score GROUP BY user_id)
于 2012-12-02T03:00:13.813 回答