两个MySQL表的合并和别名

时间:2010-02-28 21:29:21

标签: mysql merge alias

我有两张桌子:membersmembers_data 它们共享相同的唯一自动增量id键和唯一username字段。

我想将两个表合并到一个members表中,但是我使用members& members_data引用。我还需要某种别名设置,以使members_data个查询指向新的members表。

这可能吗?

2 个答案:

答案 0 :(得分:1)

通过创建一个只从另一个表执行SELECT *的视图,您可以有效地将表别名为另一个表。然而,这不是一件好事:

  • 它通过拥有一个真正另一个表的视图来混淆未来的代码维护者(他们当然可以在源代码中查看你的视图**)
  • 在某些情况下,优化器
  • 可能效率低下
  • 这不是重构事物的正确方法。

然而,取决于测试那些“50个脚本”是多么容易以及它们有多重要(提示:非常关键的代码,难以测试可以真正制动有效的开发),创建视图可能是一个短期内务实的事情(短期解决方案通常会在实际应用中保持多年,或永远存在)。

如果有任何可行的话,我强烈要求你改变“50个脚本”,并进行必要的测试以释放这种变化。在我们的团队中,我们进行了更改(在单个版本中),修改了比“50个脚本”更多的内容,但测试当然证明具有挑战性(或者至少是耗时的)。

随着应用程序变得越来越大,越来越复杂,回归测试变得更加困难。尽可能多地考虑它是​​至关重要的,因为重构将变得必要(假设应用程序在全部开发或维护),并且因为回归很糟糕。

**您的所有表格,视图等都是脚本化的,当然还有源代码管理系统!

答案 1 :(得分:0)

  

它们共享相同的唯一自动增量ID键和唯一的用户名字段。

这句话是无意义的gobbledy-gook。 MySQL(或大多数rDBMS中没有办法让两个表可以共享列)。

我怀疑你的问题可能有几个可能的答案,但没有看到实际的架构很难说。

假设你的意思是两个表都有一个唯一且两个表都相同的用户名字段,并且两个表都有一个名为id的自动增量列,那么事情要清楚得多 - 在这种情况下创建实现两个基础表中的列的组合表,将数据迁移到其中并用视图替换2个原始表。

℃。

相关问题