首页 > 解决方案 > UNION 2表很多字段,很少有不同,可能使用SELECT *?

问题描述

我有2张MYSQL表,一张794字段,另一张796字段,常见的794字段相同。是的真实数字,将数据从旧系统导入到新系统。

如果我做:

SELECT foo 
FROM (SELECT * 
      FROM bar1 UNION 
      SELECT *, null as `Extra Field 1`, null as `Extra Field 2` 
      FROM bar2
     ) bar1_2 
WHERE key = "Value in bar2 only";

这给出了 的错误值foo

在哪里SELECT foo FROM bar2 WHERE key = "Value in bar2 only";

给出正确的值foo

Extra Field 1即列已被移动,即使Extra Field 2是额外字段的正确名称。

有没有办法仍然使用*或其他一些快捷方式,以避免在查询中写入 796 列的名称?

我可以以编程方式构建查询字符串,但万一有一种仅限 SQL 的方式?

标签: mysqlsqlunion

解决方案


如果不明确写入列名,则不能将 UNION 与不同数量的列一起使用。

因此,如果您想避免写入列名,那么您可以在 bar1 中添加两个额外的字段,然后执行您的 UNION 查询。


推荐阅读