-1

私は登録およびログイン サイトを持っており、フォームの [進行状況を保存] をクリックすると、列 2 にセッション ID (user_id) を持つ新しい行が挿入されます。

また、エントリを表示できる管理者ログインもありますが、すべての保存のリストが表示されます。

各個人の最新の保存の進行状況をすべて一覧表示するクエリを見つけるのを手伝ってもらえないでしょうか? like (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;

各ユーザーの最新のスコアを取得するには、以下のsqlselectクエリを実行してみてください

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 に答える