Nested Select statement in MYSQL join(MYSQL 连接中的嵌套 Select 语句)
问题描述
SELECT * FROM A
JOIN B
ON B.ID = A.ID
AND B.Time = (SELECT max(Time)
FROM B B2
WHERE B2.ID = B.ID)
我正在尝试在 MYSQL 中加入这两个表.不要注意如果 ID 是唯一的,那么我就不会尝试这样做.我浓缩了真正的解决方案来画一个简化的图画.我正在尝试在某条记录的最大日期抓取并加入表 B.此过程由 SSIS 包运行,并表示 B2.ID 是未知列.我经常在 MSSQL 中做这样的事情,并且是 MYSQL 的新手.有人有任何指示或想法吗?
I am trying to join these two tables in MYSQL. Don't pay attention to that if the ID is unique then I wouldn't be trying to do this. I condensed the real solution to paint a simplified picture. I am trying to grab and join the table B on the max date for a certain record. This procedure is getting run by an SSIS package and is saying B2.ID is an unknown column. I do things like this frequently in MSSQL and am new to MYSQL. Anyone have any pointers or ideas?
推荐答案
我以不同的方式执行此类查询,使用排除连接而不是子查询.您想找到给定 ID 具有最大时间的 B 行;换句话说,没有其他行具有更大的时间和相同的 ID.
I do this type of query differently, with an exclusion join instead of a subquery. You want to find the rows of B which have the max Time for a given ID; in other words, where no other row has a greater Time and the same ID.
SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
LEFT OUTER JOIN B AS B2 ON B.ID = B2.ID AND B.Time < B2.Time
WHERE B2.ID IS NULL
您还可以使用派生表,其性能应该比使用相关子查询更好.
You can also use a derived table, which should perform better than using a correlated subquery.
SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
JOIN (SELECT ID, MAX(Time) AS Time FROM B GROUP BY ID) AS B2
ON (B.ID, B.Time) = (B2.ID, B2.Time)
P.S.:我添加了 greatest-n-per-group
标签.这种类型的 SQL 问题每周都会在 Stack Overflow 上出现,因此您可以按照该标签查看数十个类似问题及其答案.
P.S.: I've added the greatest-n-per-group
tag. This type of SQL question comes up every week on Stack Overflow, so you can follow that tag to see dozens of similar questions and their answers.
这篇关于MYSQL 连接中的嵌套 Select 语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:MYSQL 连接中的嵌套 Select 语句
基础教程推荐
- Sql Server 字符串到日期的转换 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01