首页 >数据库 >mysql教程 >如何高效地连接 MySQL 历史表中的最新行?

如何高效地连接 MySQL 历史表中的最新行?

Linda Hamilton
Linda Hamilton原创
2025-01-02 15:39:40498浏览

How to Efficiently Join the Most Recent Row from a Historical Table in MySQL?

加入 MySQL 中的最新行

给定两个表,customer 和 customer_data,其中后者包含客户更改的历史记录,当前的任务是检索客户信息,同时确保仅将 customer_data 中的最新条目连接到客户表中的每个客户。

要实现此目的,请考虑利用WHERE 子句代替主查询主体,因为它提供更好的性能和代码可读性。这是一个优化的查询:

SELECT c.*,
       CONCAT(title, ' ', forename, ' ', surname) AS name
FROM customer c
LEFT JOIN customer_data d
ON c.customer_id = d.customer_id
WHERE d.customer_id = (
    SELECT MAX(customer_id)
    FROM customer_data
    WHERE customer_id = c.customer_id
)
LIMIT 10, 20;

此查询通过在 WHERE 子句中进行过滤,确保仅将 customer_data 中的最新行加入到 customer 中的每个客户中。 LEFT JOIN 确保来自 customer 的所有客户都包含在结果中,即使他们在 customer_data 中没有相应的条目。

关于您对同时使用 CONCAT 和 LIKE 的担忧,您是对的。 CONCAT 连接字符串,生成的字符串可以与 LIKE 运算符一起使用来执行模式匹配。您的查询在这方面是有效的。

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

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