Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择排除冗余字段时进行多个左连接的简单方法_Mysql - Fatal编程技术网

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);