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

标签 php mysql join

我试图让 table2 的最后一行与 table1 连接。

表 1 列:

  1. 编号
  2. 姓名
  3. 创建日期

表2列:

  1. 编号
  2. 上次登录
  3. IP地址

每次用户登录时,登录数据都会存储到表 2 中。所以我试图显示表 1 中的所有用户,它显示表 2 中的 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 数据未显示最新记录。

最佳答案

如果您只想要最后一次登录,也许可以使用相关子查询:

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) 上建立索引。

关于php - 从左连接返回 mysql 查询中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45538589/

相关文章:

PHP - SQL 查询失败,似乎有效?

mysql - SQL按函数分组错误

php - 如何在数据库中存储用户兴趣

mysql - 如何在MySql中选择与一列中的值匹配而与另一列中的值不匹配的记录?

SQL统计每个部门的不同工作

php - WHERE 或停止 LIKE 工作

php - 关于 PHP 的一点建议

php - 如何在不单击提交按钮的情况下在页面加载时提交表单?

mysql - 根据国家/地区统计找到的总结果

java - 连接满足两个表中多个列的多个表