【发布时间】:2021-10-21 05:21:15
【问题描述】:
我有两个 MySQL 表 A 和 B 都使用这个模式
| ID | entity_id | asset | asset_type |
|---|---|---|---|
| 0 | 12345 | x | 1 |
| .. | ......... | ..... | .......... |
我想获得两个表之间最大行数差异的聚合前 10/50/whatever entity_ids。我认为我可以手动执行此操作,只需通过entity_id 获取最高行数,就像这样
select count(*), entity_id
-> from A
-> group by entity_id
-> order by count(*) desc;
并且只是手动比较表 B 的相同查询,但我想知道是否有一种方法可以在一个查询中执行此操作,即比较每个不同 entity_id 的行数并汇总行数之间的差异。一些注意事项
-
entity_id上有两个表的索引 - 对于每个
entity_id,表 B 将始终具有相同或更多的行数
样本输出
| entity_id | difference |
|---|---|
| 12345 | 100 |
| 3232 | 75 |
| 5992 | 40 |
| and so on | for top 10/50 |
【问题讨论】:
-
是否有任何
entity_ids 只存在于一张表中? -
不——我相信这些表之间的唯一区别应该是任何给定
entity_id的行数 -
请提供示例输出......表及其差异的实体 id 明智计数......如果差异为负则......
-
道歉@RahulBiswas 我添加了一个输出
标签: mysql sql join count aggregate-functions