我有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方式呢?
如果不显式地写入列名,则无法将UNION用于不同数量的列。
因此,如果要避免写列名,则可以在bar1中添加两个额外的字段,然后执行UNION查询。