mysql - 从两个相似表中获取数据的 SQL 查询

标签 mysql sql join

我有两个表,我们称它们为 A 和 B。它们的列名相同。 但是,B 是完全填充的,而 A 就像是吃了一半的苹果。 他们有很多领域,但为了简单起见,我只打算使用一个。 他们都有公司代码。

B 有重复项(因为人们不喜欢删除数据?)。 所以,不幸的是,我不能轻易地在公司代码上将两者结合在一起,因为 我得到这些重复。

我想要做的是,对于每个公司代码,只从 B 中取出一个不同的行。对于每个公司代码,我只想要具有最高索引(最后更新)的行。

然后,我想将这些行与 A 中相应的公司代码连接起来。 但是,一个小问题是 A 有一些公司代码不在 B 中,而我需要在我的结果集中包含这些代码。 B 拥有大部分数据,因此我根据上面的匹配从 B 获取数据。 当然,对于那些公司代码仅存在于 A 中的条目,某些字段的数据必须保持空白。

那么..我该怎么做?我有点想在 SQL 调用之外执行逻辑。但是,我调用的函数将结果集作为参数,然后生成一个文件 从中。因此,我要么必须重写该函数,要么创建我自己的 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

关于mysql - 从两个相似表中获取数据的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100960/

相关文章:

mysql - 基于 AND 返回基于标签数据库的不同 SQL 查询

sql - 这个MySQL语句: DECLARE @ID INT有什么问题

sql - 创建包含计算列的表

javascript - 根据Javascript中的indexOf位置拆分数组并组合成单独的数组

php - 内容在 php 中的 fpdf 单元格中重叠

PHP 邮件脚本运行多次(使用 Mailgun)

mysql - 谱系树算法

mysql - mysql查询中的汇总信息列

php - 使用 MyISAM 从多个表中删除

SQL - SELECT MAX() 和伴随字段