首页 >数据库 >mysql教程 >如何将 MySQL 表仅连接到相关表中的最新行?

如何将 MySQL 表仅连接到相关表中的最新行?

Patricia Arquette
Patricia Arquette原创
2025-01-01 11:18:11628浏览

How to Join a MySQL Table to Only the Most Recent Row in a Related Table?

MySQL:仅连接到最近的行

在这种情况下,您有表 customer 和 customer_data,其中 customer_data 包含历史记录每个客户的变化。您的目标是检索客户信息,同时仅连接到 customer_data 中的最新行。

要实现此目的,请利用 WHERE 子句中的子查询来标识 customer_data 中每个客户的最大 ID。使用 LEFT JOIN 语法将此子查询连接到 customer 表,如下所示:

SELECT c.*,
FROM customer AS c
LEFT JOIN customer_data AS d ON d.customer_id = c.customer_id AND d.ID = (
  SELECT MAX(ID)
  FROM customer_data
  WHERE customer_id = c.customer_id
)
WHERE name LIKE '%Smith%'
LIMIT 10, 20;

在此查询中:

  • LEFT JOIN 确保 customer 表中的所有行包含在结果中,即使它们在 customer_data 中没有相应的行。
  • WHERE 子句中的子查询计算 customer_data 中每个客户的最大 ID。
  • 然后将子查询的结果与 customer_data 中的 ID 列进行比较,以仅选择最近的行。

此方法有效隔离每个客户的最新条目并将它们连接到客户表以进行进一步处理。

以上是如何将 MySQL 表仅连接到相关表中的最新行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn