SQLSERVER多表联合查询(join)前⾔:
项⽬中要写个存储过程,从4个表中各获取⼀个字段值,然后返回。
我这SQLSERVER的三脚猫功夫,上来乱整⼀顿,别说乱拳打死⽼师傅,差点把⾃⼰弄死!
⽤法:
使⽤ INNER JOIN(内连接),我们还可以使⽤其他⼏种连接。
下⾯列出了您可以使⽤的 JOIN 类型,以及它们之间的差异。
JOIN: 如果表中有⾄少⼀个匹配,则返回⾏
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的⾏
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的⾏
FULL JOIN: 只要其中⼀个表中存在匹配,就返回⾏
⽰例代码:
先抛块砖(不⽤想了,这么‘⽆敌’的写法肯定是我写的了)
,ta1.name1,ta2.name2,ta3.name3,ta4.name4 from
(select no,name1 from table1)as ta1,
(select no,name2 from table2)as ta2,
(select no,name3 from table3)as ta3,
(select no,name4 from table4)as ta4
= = =
经⾼⼈指点,原来还有join这个东西,羞愧中。。。
,
ta1.name1,
ta2.name2,
ta3.name3,
ta4.name4
FROM  table1 AS ta1
INNER JOIN table2 ta2 =
INNER JOIN table3 ta3 =
INNER JOIN table4 ta4 =
以为⼤功告成,原来还早~
需要是有数据时返回查询所得,不满⾜条件时返回默认值,加上 left join 和 isnull的⽤法
最终⽅法
,
ISNULL(ta1.name1,0),
isnull的用法
ISNULL(ta2.name2,0),
ISNULL(ta3.name3,0),
ISNULL(ta4.name4,0)
FROM  table1 AS ta1
LEFT JOIN table2 ta2 =
LEFT JOIN table3 ta3 =
LEFT JOIN table4 ta4 =