比如说,三个表格,三个表格的字段名都是相同的,而且行数也相同,都是学号,姓名,成绩,但是里边的内容完全不相同或者少部分有相同。
现在我想要的是不是通过字段连接,而是直接平行连接,连接之后的效果想要与原单独表的行数相同,且没有笛卡尔积,仅仅是平行连接,通俗来讲就是三个表直接画在一起,其他的形状都不变。请问可以实现吗?
我感觉肯定实现不了啊,但这个为啥我做个练习题会这样出题呢?是我学的还不到位,还是题出错了。
使用对应数据库的行编号函数(或者方式),查询每个表增加一个编号列,成为临时表,然后使用普通连接查询这些临时表,通过编号关联避免笛卡尔积。如MySQL(order by xx是为了使用期望的顺序,非必须):
with t4 as (select row_number() over(order by xx) as id, t1.* from t1),
t5 as (select row_number() over(order by xx) as id, t2.* from t2),
t6 as (select row_number() over(order by xx) as id, t3.* from t3)
select t4.*, t5.*, t6.* from t4, t5, t6
where t4.id=t5.id and t5.id=t6.id