FROM table1 a (nolock)
left join table2 b on a.id=b.id
left join table3 c on c.name=a.name and c.id=a.id
8 个解决方案
#1
左连接
#2
select ....
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on c.name=a.name and c.id=a.id
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on c.name=a.name and c.id=a.id
#3
首先取出table1 表中所有数据,然后再加上与table1 ,table2 匹配的的数据,然后再加上与table1 ,table3 匹配的的数据
#4
你一段一段运行,看看结果就知道了.
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
left join table3 c on c.name=a.name and c.id=a.id
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
left join table3 c on c.name=a.name and c.id=a.id
#5
SELECT语句的FROM子句可以指定以下几种类型的连接
FROM子句关键字 相应的结果集
CROSS JOIN 笛卡尔乘积(所有可能的行对)
INNER JOIN 仅对满足连接条件的CROSS中的列
LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行
RIGHT OUTER JOIN 与LEFT相同,但两个表的角色互换
FULL OUTER JOIN LEFT OUTER 和 RIGHT OUTER中所有行的超集
#6
select ....
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on c.name=a.name and c.id=a.id
-----------------------------------
select ....
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on (c.name=a.name and c.id=a.id)//是不是加个括号更容易理解
是这个意思么
a,b先左连接 根据(a.id=b.id)
得到的结果
和c再左连接 根据((c.name=a.name and c.id=a.id))
#7
yeah
#8
建议按F1看看帮助,这是左连接。
比如有n个table,n1 left join n2,然后left join n3,……
就是首先取出n1 表中所有数据,然后再加上与n1 ,n2 匹配的的数据,此时结果是n1 + (n1 & n2有关联的)中;然后再加上与n1, n3匹配的的数据,再加n1,n4匹配的数据……
比如有n个table,n1 left join n2,然后left join n3,……
就是首先取出n1 表中所有数据,然后再加上与n1 ,n2 匹配的的数据,此时结果是n1 + (n1 & n2有关联的)中;然后再加上与n1, n3匹配的的数据,再加n1,n4匹配的数据……
#1
左连接
#2
select ....
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on c.name=a.name and c.id=a.id
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on c.name=a.name and c.id=a.id
#3
首先取出table1 表中所有数据,然后再加上与table1 ,table2 匹配的的数据,然后再加上与table1 ,table3 匹配的的数据
#4
你一段一段运行,看看结果就知道了.
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
left join table3 c on c.name=a.name and c.id=a.id
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id
left join table3 c on c.name=a.name and c.id=a.id
#5
SELECT语句的FROM子句可以指定以下几种类型的连接
FROM子句关键字 相应的结果集
CROSS JOIN 笛卡尔乘积(所有可能的行对)
INNER JOIN 仅对满足连接条件的CROSS中的列
LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行
RIGHT OUTER JOIN 与LEFT相同,但两个表的角色互换
FULL OUTER JOIN LEFT OUTER 和 RIGHT OUTER中所有行的超集
#6
select ....
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on c.name=a.name and c.id=a.id
-----------------------------------
select ....
from (
select ...
FROM table1 a (nolock)
left join table2 b on a.id=b.id ) a
left join table3 c on (c.name=a.name and c.id=a.id)//是不是加个括号更容易理解
是这个意思么
a,b先左连接 根据(a.id=b.id)
得到的结果
和c再左连接 根据((c.name=a.name and c.id=a.id))
#7
yeah
#8
建议按F1看看帮助,这是左连接。
比如有n个table,n1 left join n2,然后left join n3,……
就是首先取出n1 表中所有数据,然后再加上与n1 ,n2 匹配的的数据,此时结果是n1 + (n1 & n2有关联的)中;然后再加上与n1, n3匹配的的数据,再加n1,n4匹配的数据……
比如有n个table,n1 left join n2,然后left join n3,……
就是首先取出n1 表中所有数据,然后再加上与n1 ,n2 匹配的的数据,此时结果是n1 + (n1 & n2有关联的)中;然后再加上与n1, n3匹配的的数据,再加n1,n4匹配的数据……