【问题标题】:Comparing multiple tables in mysql比较mysql中的多个表
【发布时间】:2011-10-18 12:58:19
【问题描述】:

我有 4 个结构相同的表。 这 4 个表是从另一个主表生成的。

  • 主表 -> A(10 000 行)
    • 表 1 -> a1(2000 行)
    • 表 2 -> a2(3000 行)
    • 表 3 -> a3(4 000 行)
    • 表 4 -> a4(1000 行)

假设生成的4个表是不相交的,它们的和等于表A。

但我需要确认一下。

我的问题:我如何比较这 4 个表,看看它们是否有任何共同的 id?

我知道我可以构建很多查询来将 a1 与 a2 内联,a1 与 a3 等。

但我认为这应该是另一种更好的方式。

【问题讨论】:

  • 在所有表之间的 id 上编写内连接有什么问题?
  • 因为内连接会找到所有四个表之间共有的所有 ID。但我想要的不是那个。我想知道一个特定的 ID 是否出现在多个表中。

标签: mysql sql comparison


【解决方案1】:

我将union all 将每个表中的所有 id 和 group by 放在一起,然后检查是否有超过一个的计数

select count(*) from (
select id from table1 union all
select id from table2 union all
select id from table3 union all
select id from table4) group by id having count(*)>1

如果任何 id 出现不止一次,它将显示在此查询的结果中。

【讨论】:

  • 谢谢!它工作得很好,而且很简单。使用 mysql 我只需要为派生表添加一个别名。
猜你喜欢
  • 2011-08-09
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2013-03-03
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
相关资源
最近更新 更多