Java学习笔记--SQL联合查询(查询字段类型相同的多表,合并对应列数据)

初学SQL查询时,遇到一个问题,有一些没有创建关联或者查询条件不是关联字段的时候,数据的返回结构会让我们处理起来非常麻烦。


当项目中的某一类产品有一些属性相同,但是其他属性有其独立性时,将其各自分表存储,但是查询的时候,多表相同的数据就会一行多列的形式返回。


比如有clother表、pants表、shoe表,都有着共同的属性,当用户想查询Nike品牌的产品时,需要每个表查询一次,然后将结果合并起来,但是要加其他条件的时候,就会显得比较复杂。


我们创建clothers表结构和数据如下:

Java学习笔记--SQL联合查询(查询字段类型相同的多表,合并对应列数据)

pants表:

Java学习笔记--SQL联合查询(查询字段类型相同的多表,合并对应列数据)

shoe表:

Java学习笔记--SQL联合查询(查询字段类型相同的多表,合并对应列数据)


真实业务中可能还有其他属性。

如果直接查询的话:

Java学习笔记--SQL联合查询(查询字段类型相同的多表,合并对应列数据)


其实,这些元素完全可以只显示为三列。那么该怎么操作呢?


只需要使用union all 关键字就可以


Java学习笔记--SQL联合查询(查询字段类型相同的多表,合并对应列数据)


这样的话,结果就可以以更加明了的形式输出。


我们还可以在后面加上查询条件:

Java学习笔记--SQL联合查询(查询字段类型相同的多表,合并对应列数据)


注意:对应的列名可以不一致,但是数据类型一定要相同

        加查询条件时,用别名会使代码更加明了。

        在代码中做映射时,可以单独创建一个类(Product),用于mybatis等框架的bean映射