前天的项目,刚接手,对于模块还不是很熟悉,其中有一个模块,涉及到4个表,其中主要的表就有两个,只要把这个弄清楚了就一切回归于“太平”了。
模块要求:把两个表的内容查询出来,结果连接在一起。大师说完,感觉没有什么问题,自己就看了下数据库表的设计,看完后,发现两张表中的主键完全可以相同啊!
项目不仅设计到读出来,还要根据主键把对应的所有数据都读出,这一下让我感觉很头疼,。想想以前老师曾说过,在万不得已的时候不要用UNION或者UNION ALL,这会大大降低性能的。
于是就和大师商量能不能换一种简单的,分开做,人家大师说了,分开也可以,就是相同的业务分成两类来做,一不好,二不美观。
就这样呗,回家想方法呗,查询简单,就是如何在主键相同的情况下区分数据来自那张表的问题。
本想加一个互斥的列来,试了一下没成功,。最后还是加了一个标志用来区分不同表。
代码如下:
SELECT a.biAutoID, a.vCompanyName ,'Table_1' AS Differ FROM CapitalProjectKeyTechnology as a UNION ALL SELECT b.biAutoID, b.vCompanyName ,'Table_2' AS Expr1 FROM CapitalProjectTest as b