MySQL - 从与第一个表匹配的第二个表中选择最后一条记录

标签 mysql join multiple-tables

我有两个表 customers 和 orders,结构如下。

表 - 客户

  • 编号
  • 客户姓名

表格 - 订单

  • 编号
  • 订单编号
  • 客户编号

customers表有客户记录,orders表有客户下的订单,

订单表中的

customer_id 链接到客户表的 id 字段。

现在一个客户可以有零个或一个或多个订单,我想只获取客户最后下的订单。

当我运行以下查询一个简单的不可见连接时,它返回客户的所有订单

SELECT customers.customer_name,orders.order_id FROM orders,customers WHERE orders.customer_id=customers.id

我也尝试过不同的 JOIN 语句,但无法获取客户的最后订单,我想在一个 SQL 查询中为所有客户获取它。

预先感谢您的帮助。

最佳答案

在 MySQL 中,只有几种方法可以使它工作(我现在实际上)。第一个是将您的表格排序为 descjoin 之前:

SELECT c.customer_name, o.customer_id, o.order_id,o.id FROM customers c 
INNER JOIN orders o 
    ON o.id = (SELECT id FROM orders WHERE customer_id = c.id ORDER BY id DESC LIMIT 1)

实时使用是完成它的唯一方法,但如果您需要进行一些非实时连接,您可以创建一个临时表或别名表对其进行排序以进行选择,如下所示:

CREATE TABLE tmp_your_table AS 
SELECT * FROM orders ORDER BY id DESC

所以现在你可以让这个加入工作了:

SELECT c.customer_name, o.customer_id, o.order_id,o.id FROM customers c 
INNER JOIN tmp_your_table o ON o.id = tmp_your_table.id

关于MySQL - 从与第一个表匹配的第二个表中选择最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16785468/

相关文章:

php - 将 base64 编码的图像以 BLOB 形式保存到服务器端数据库

php - 如何根据类别获取多条记录

PHP/MYSQL 从一个表获取引用,然后从另一个表获取结果。

SQL 4表内连接也拾取和空值?

mysql - 错误 : ER_OPERAND_COLUMNS: Operand should contain 1 column(s)

sql - 棘手的 SQL 查询

选择连接中的mysql子查询

MySQL 选择、连接表和组/计数逗号分隔值

mysql - MySQL查询中已经使用了两张表,如何引用一张表?

php - 从 mysql 数据库中获取数据到 Ionic 应用程序