【问题标题】:How do I compare each table data with the remaining tables如何将每个表数据与其余表进行比较
【发布时间】:2020-03-23 22:01:52
【问题描述】:

Example input and Result 我有图片中提到的多个表格。每张表代表每天的机会。我的任务是将表 1 上的机会与表 2 和表 3 进行比较。表 2 与表 3 等等多个表。 通常,当我将 1 个表与其他表进行比较时,我会执行 FULL OUTER JOIN 并通过 TABLEAU 报告进行比较。这在 1 个比较的情况下效果很好。但是我现在面临的问题是我可能有这么多表,都需要相互比较 例子: Jan1 表应该与 Jan2 表、Jan3 表、Jan4 表进行比较所以..on Jan2 表应该与 Jan3 表、Jan4 表、Jan5 表比较所以..on

请建议是否有一种方法可以比较这些表,而不必外连接每个表组合。 提前致谢

【问题讨论】:

  • 为什么有多个表?拥有一个带有额外DATE 列的单个列会容易得多。
  • 每一个都是每日机会的快照。是的,这些可以与额外的 DATE 列组合成一个。我现在的问题是如何比较第一个 DATE 快照中的每个机会与第二个 DATE 快照中的相同机会的更改(例如:阶段更改、$$ 更改等)
  • @Rajashree 。 . . “比较”是什么意思?请提供所需的结果。 “比较”两个表的代码也可以帮助其他人理解您的意思。
  • 从修复损坏的架构开始
  • @Gordon 我已经编辑了我之前上传的图片,请查看并告诉我是否有帮助。谢谢

标签: mysql sql union tableau-api outer-join


【解决方案1】:

完全连接技术也适用于比较两个以上的表。

但是 MySQL 不支持它,所以你可以去union all:

select
    id,
    name,
    price,
    max(who = 't1') is_in_table1,
    max(who = 't2') is_in_table2,
    max(who = 't3') is_in_table3
from (
    select id, name, price, 't1' who from table1
    union all select id, name, price, 't2' who from table2
    union all select id, name, price, 't3' who from table3
) t
group by id, name, price

这为原始三个表中可用的每个不同行提供一行,并带有 3 个布尔标志,指示是否在每个表中找到该行。

【讨论】:

  • @Rajashree 。 . .我认为这回答了你的问题。
猜你喜欢
  • 2020-10-16
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2014-09-05
  • 1970-01-01
  • 2021-05-12
相关资源
最近更新 更多