Mysql 选择排除冗余字段时进行多个左连接的简单方法
应为多个左连接Mysql 选择排除冗余字段时进行多个左连接的简单方法,mysql,Mysql,应为多个左连接 Input t1 a b c t2 a d e t3 a f g 尝试 a b c d e f g 如果要连接的字段超过10个,则不方便获得结果 如果我按如下方式运行代码,它将返回冗余字段a select t1.*, t2.d,t2.e,t3.f,t3.g from t1 left join (t2, t3) on ( t1.a=t2.a and t1.a= t3.a ) 如果使用USING子句而不是ON,则它不会返回冗余字段 select *
Input
t1
a b c
t2
a d e
t3
a f g
尝试
a b c d e f g
如果要连接的字段超过10个,则不方便获得结果
如果我按如下方式运行代码,它将返回冗余字段a
select t1.*, t2.d,t2.e,t3.f,t3.g
from t1 left join (t2, t3)
on (
t1.a=t2.a
and t1.a= t3.a )
如果使用USING子句而不是ON,则它不会返回冗余字段
select *
from t1 left join (t2, t3)
on (
t1.a=t2.a
and t1.a= t3.a )
a b c a(1) d e a(2) f g
这将返回:
a b c d e f g每个输入表和结果表的列的名称是什么?很容易生成一个垂直结果集,每个值在单独的一行中。如果要生成水平结果集,需要使用动态SQL。@t1是a、b、c,t2是a、d、e,t3是a、f、G,这里没有免费的午餐。你必须用艰苦的方式编码。是的,你需要像第一个解决方案那样键入每个列名。SQL标准不提供任何语法来执行“列集算术”。这已经被问过很多次了。
select *
from t1
left join t2 using (a)
left join t3 using (a);