2017-08-07 3 views
3

table1との結合を残したtable2の最後の行を取得しようとしています。mysqlクエリの最後の行を左の結合から返します

表1のコラム:

  1. ID
  2. 作成日

表2列:

  1. ID
  2. のip_addressにログインtable2の毎回ユーザーに格納

ログインデータを

  • last_login。だから私は、表2からlast_loginレコードを表示しているTABLE1からすべてのユーザーを表示しようとしています。

    ここに私の現在のクエリです:私は、ユーザーAが5回ログインした場合、クエリが5行を返します両方のテーブルからすべてのデータを、取得することができています上記のクエリでは

    SELECT table1.*, table2.last_login 
    FROM table1 
    LEFT JOIN table2 ON table2.id= table1.id 
    ORDER BY table2.last_login desc; 
    

    が、ユーザーの詳細とそのデータ(last_login)のみを表示したいと考えました。 GROUP BY table1.idを追加すると、すべてのユーザーに対して1行レコードが返されますが、last_loginデータに最新のレコードが表示されません。

  • 答えて

    0

    あなただけの最後のログインが必要な場合は、おそらく相関副問合せはどうなる:

    SELECT t1.*, 
         (SELECT MAX(t2.last_login) 
         FROM table2 t2 
         WHERE t2.id = t1.id 
         ) as last_login 
    FROM table1 t1 
    ORDER BY last_login desc; 
    

    パフォーマンスを得るために、あなたはtable2(id, last_login)にインデックスをしたいです。

    +0

    ありがとうございました!それは私の問題を解決した:) –

    +0

    (おそらくPRIMARY KEYです) – Strawberry

    関連する問題