我有两张表,我们称它们为A和B。它们的列名是相同的。
但是,B在A就像一个吃了一半的苹果的地方是完全居住的。
他们有很多田地,但我只想用一块来保持简单。
他们都有公司代码。
B有重复项(因为人们不喜欢删除数据?).
所以,不幸的是,在公司代码上我不能很容易地将两者结合在一起,因为
我得到这些重复。
我要做的是,对于每个公司代码,只从B中提取一行。我只想要每个公司代码的索引最高的行(它是最后更新的)。
然后,我想用A中相应的公司代码连接这些行。
但是,有一个小问题是a有一些公司代码,而不是B,我需要在我的结果集中。B有大部分数据,所以我根据上面的匹配从B获取数据。
当然,对于那些只有公司代码存在的条目,数据必须对某些字段保持空白。
所以。。我该怎么做?我有点受不了只做SQL调用之外的逻辑。但是,我调用的函数将resultset作为参数,然后生成一个文件
从它。所以,我要么重写函数,要么创建自己的resultSet对象,放入我想要的数据(可能会变得很难看)。
有什么想法吗?我正在使用MySQL,但我觉得如果有人能给我一个高级的解决方案,我应该能够把它转换成MySQL。
最佳答案
select [column list]
from A
left join (
select [column list]
from B
join (company_code, max(index) maxindex
from B
group by company_code) maxcode
on b.company_code = maxcode.company_code
and b.index = maxcode.maxindex
) B_distinct
on A.company_code = B_distinct.company_code