php - 如何正确 LEFT JOIN 用户进行交易

标签 php mysql sql join

   SELECT *
     FROM users
LEFT JOIN payments ON payments.user_id = users.user_id
    WHERE payments.id = (SELECT max(p2.id) 
                           FROM payments p2 
                          WHERE payments.user_id = p2.user_id)

是我当前用于选择用户信息及其最后一笔交易的查询。问题是我想选择用户,即使他们在数据库中没有事务,我该怎么做?

我正在使用的表结构非常简单:

USERS - user_id, name
PAYMENTS - id, user_id, method

最佳答案

您可能最好(性能方面)加入这样的子查询:

SELECT *
  FROM users u
LEFT JOIN 
(Select user_id, max(id) from payments group by user_id) p
ON p.user_id = u.user_id

通过在Where子句中放置任何条件,您可以将其转变为内部联接,

关于php - 如何正确 LEFT JOIN 用户进行交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690081/

相关文章:

php - 在存储过程之外提交事务

javascript - 如何使用 jQuery POST 而不是 html 表单来删除表条目

python - SQLAlchemy 混合表达式连接问题

Java SQLPreparedStatement和维护连接

mysql - 如何获取mysql中行的百分比

mysql - 从关联表中选择行数而不进行子选择

php - 通过 PEAR 安装 phpunit 后如何获得 phpunit.bat?

php - PDO 在第一次尝试后执行失败,args 不会被添加到例程中的准备好的语句中吗?

mysql - 使用过程创建备份表

php - LIKE 运算符和 NOT IN 的正确用法