首页 > 解决方案 > 对于另一个表中的特定 ID,查找表中具有最高序列号的行

问题描述

我有 2 张桌子:

Table 1:
Job #
XLG24
ABC123
XYZ123

表 2:

Sequence #  Job # Display Order
1           XLG24    1
2           XLG24    2
2           ABC123   1 
3           ABC123   2 
4           ABC123   3
4           XYZ123   1 

我试图从表 2 中提取表 1 中的作业 # 和序列 #。但是,当我尝试时,它只提取表 1 中具有最高序列 # 的作业 #(在这种情况下只有序列 # 4)。

这是我的代码:

select * from TABLE2 where JOB# IN
     (SELECT JOB# FROM table1)
      and SEQUENCE# = (select max (SEQUENCE#) from Table2)
order by Display_order desc

我的代码的输出是这样的:

Sequence #  Job #
4           ABC123
4           XYZ123

我希望它看起来像:

Sequence #  Job #
2           XLG24
4           ABC123
4           XYZ123

因此,总而言之,我试图仅在表 2 中为表 1 中的特定 ID 找到具有最高序列号的行 有人可以提供任何建议吗?

标签: mysqlsql

解决方案


假设table1有唯一的条目(工作编号只显示一次),并且table2有多个条目(我确定这些都只是这篇文章的示例名称),那么我认为你想加入table1然后table2找到最大值.. 像这样:

SELECT t1.job# jobNum,max(t2.Sequence#) maxSeq 
FROM table1 t1 LEFT JOIN table2 t2 ON t1.job#=t2.job#

这将包括所有条目table1——即使它们没有在其中找到table2——如果在其中找不到,table2则将maxSeq包含NULL. 如果所有条目都在两个表中,或者您只希望在两个表中都找到所有条目,那么您将需要一个INNER JOIN


推荐阅读