从左连接返回mysql查询中的最后一行

时间:2017-08-07 02:25:45

标签: php mysql join

我试图得到我与table1一起离开的最后一行table2。

表1列:

  1. ID
  2. 名称
  3. 创建日期
  4. 表2专栏:

    1. ID
    2. LAST_LOGIN
    3. IP_ADDRESS
    4. 每次用户登录时,

      登录数据存储到table2中。所以我试图显示table1中显示table2中last_login记录的所有用户。

      这是我当前的查询:

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

      通过上面的查询,我可以从两个表中获取所有数据,如果用户A记录了5次,则查询将返回5行,但我只想显示用户详细信息及其last_login数据。如果我添加GROUP BY table1.id,则会为每个用户返回1行记录,但last_login数据未显示最新记录。

2 个答案:

答案 0 :(得分: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)上的索引。

答案 1 :(得分:0)

尝试在SQL中使用MAX函数

供参考:https://www.techonthenet.com/sql/max.php