1
username   level
me          1
you         1
me          2
me          3
you         1

各ユーザー名の最高値を取得したい。したがって、「私」の場合は 3、「あなた」の場合は 1 となるはずです。SELECT ステートメントでこれを行うにはどうすればよいですか?

INSERT INTO table1 (username, level)
SELECT username, (MAX(level)
WHERE username=username group by username)
FROM table2

^ そんなはずなのですが、よくわかりません。

--編集--これは、レベルと経験列全体に同じ値を与えていますが、それらは間違いなくすべて同じではありません:

INSERT INTO oitc_test (username, xpboost_expiration, level, exp, kills, games) 
SELECT oitc.username, oitc.xpboost_expiration, MAX(oitc.level), MAX(oitc.exp), oitc_sum.kills, oitc_sum.games 
FROM oitc, oitc_sum 
GROUP by username;

私は何を間違っていますか?

4

1 に答える 1

3

複雑なクエリを実行しようとしています。簡単な作業に。

INSERT INTO table1 (username, level) 
SELECT username, MAX(level)
FROM table2
GROUP BY username

JOIN2 番目の質問では、句を使用する必要があります。

INSERT INTO oitc_test (username, xpboost_expiration, level, exp, kills, games) 
SELECT o.username, o.xpboost_expiration, MAX(o.level), MAX(o.exp), os.kills, os.games 
FROM oitc o
INNER JOIN oitc_sum os
    ON o.username = os.username
GROUP BY o.username;

私が考えているところusernameは、テーブルoitcoitc_sum

于 2013-06-08T23:49:49.940 に答える