【问题标题】:Union view losing records联合视图丢失记录
【发布时间】:2021-03-04 16:13:25
【问题描述】:

问题

在视图中执行查询时我丢失了记录。

常规查询

SELECT `COUNTRY`, COUNT(`COUNTRY`) from chile.tablechile
UNION SELECT `COUNTRY`, COUNT(`COUNTRY`) from costarica.tablecostarica
UNION SELECT `COUNTRY`, COUNT(`COUNTRY`) from elsalvador.tableelsalvador
UNION SELECT `COUNTRY`, COUNT(`COUNTRY`) from guatemala.tableguatemala

价值计数

COUNTRY COUNT
CHILE 5488892
COSTA RICA 952113
EL SALVADOR 1346861
GUATEMALA 2744655

查看

CREATE VIEW `new_view` AS
SELECT `COUNTRY`, `COL1`, `COL2`, `COL3` from chile.flotachile
UNION SELECT `COUNTRY`, `COL1`, `COL2`, `COL3` from costarica.flotacostarica
UNION SELECT `COUNTRY`, `COL1`, `COL2`, `COL3` from elsalvador.flotaelsalvador
UNION SELECT `COUNTRY`, `COL1`, `COL2`, `COL3` from guatemala.flotaguatemala;

SELECT `COUNTRY`, COUNT(`COUNTRY`)
FROM view_database.new_view
GROUP BY `COUNTRY`
;


价值计数

COUNTRY COUNT
CHILE 349638
COSTA RICA 61707
EL SALVADOR 51902
GUATEMALA 348985

【问题讨论】:

  • Union 带有免费的重复数据删除/distinct,您应该使用 union all。而且我看不出你有什么收获。
  • 我猜你不需要我们告诉你你的架构很奇怪。
  • @Strawberry 哦,男孩,你不知道。我的客户有 Excel 思维模式(30 列,百万行),现在要求我在单个 PowerBI 中进行可视化。由于时间限制,无法创建合适的方案。
  • @P.Salmon 谢谢你的回答,我会试试 UNION ALL。我有什么收获?我需要在单个 PowerBI 中可视化所有数据,并且我正在尝试将单个表用作源。所有数据都在多个数据库中,Power 只能连接一个。

标签: mysql database union


【解决方案1】:

警惕例如 union 中的 distinct 隐式

DROP TABLE IF EXISTS T;
CREATE TABLE T
(ID INT,ORDER_NUM INT, STATUS INT);
INSERT INTO T VALUES
(1,100,1),(1,100,1),(1,300,2);

select t.* from t
union
select t.* from t;

+------+-----------+--------+
| ID   | ORDER_NUM | STATUS |
+------+-----------+--------+
|    1 |       100 |      1 |
|    1 |       300 |      2 |
+------+-----------+--------+
2 rows in set (0.002 sec)

select t.* from t
union all
select t.* from t;

+------+-----------+--------+
| ID   | ORDER_NUM | STATUS |
+------+-----------+--------+
|    1 |       100 |      1 |
|    1 |       100 |      1 |
|    1 |       300 |      2 |
|    1 |       100 |      1 |
|    1 |       100 |      1 |
|    1 |       300 |      2 |
+------+-----------+--------+
6 rows in set (0.001 sec)

如果这不是问题,则发布示例数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多