SQLを使用して最新の結果を取得しようとしています。私はここで最も受け入れ答えをコピーしSQLに最新の日付が見つかりました。なぜ「内部結合」が必要ですか
SQL query to get most recent row for each instance of a given key
:私は、リンク、ウェブサイトを検索し、「stackoverflowの」からこの古い記事を見つけました。
Select u.[username]
,u.[ip]
,q.[time_stamp]
From [users] As u
Inner Join (
Select [username]
,max(time_stamp) as [time_stamp]
From [users]
Group By [username]) As [q]
On u.username = q.username
And u.time_stamp = q.time_stamp
私が理解していないことは、なぜ以下のように使用できないのですか(つまり、なぜこの場合は「内部結合」操作が必要ですか)ですか? (私は信じているのMySQLを除く)
Select username, ip, max(time_stamp) as time_stamp
From users
Group By username
(1)使用しているデータベースで質問にタグを付けてください。 (2)動作しません。ほとんどのデータベースでは、 'ip'が' GROUP BY 'に含まれていないので構文エラーを返します.SQLエンジンはどちらの値を選択するのかわかりません(MySQLは構文を受け入れますが、 )。 –
一般的なGROUP BYルールの意味は次のとおりです。 GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を特定するか、または集合関数の引数でなければなりません。 – jarlh