上菜鸟https://www.runoob.com/sql/sql-join.html看对连表和子查询的介绍还是蛮详细的
区别
连表查:又分为 左外连接,右外连接,内连接,外连接 是拼凑成大表
where 之查出有数据的
左右外连接 sql中主表对应的从表为空的数据也会查出
子查询:子查询只能返回一条数据,不然会被报错,以某表为主表
为空/有数据 都会查出 一对一 走从表
相同点
都是走主从表关系 主从表 一对多
语句中以从表为主表,查出从表引用主表字段的主表数据(从表中的外键可为空-》有从表数据不一定有主表数据)
适用情况
考虑代码量
连表查询的效率更高
参考推荐
https://blog.csdn.net/u011277123/article/details/54863371
有挺多 SQL例子的不错
下面展示一些 例子代码片
可以配合where
SELECT U.*,
C.ID DEPT_ID,
C.NAME DEPT_NAME,
(SELECT D.NAME FROM T_DEPT D WHERE UD.COMP_ID = D.ID) ON_CPANY
FROM T_USER U
left join T_USER_DEPT UD
on U.ID = UD.USER_ID
and UD.IS_MAIN = 'Y'
left join T_DEPT C
on UD.DEPT_ID = C.ID
SELECT S.*,
U2.NAME,
S.MODIFIER,
U.NAME MODIFIER1,
S.GATE_CLIENT_ID,
WA.WORK_AREA_NAME,
B.DEP_NAME_CN COMP_NAME,
C.CLIENT_NAME
FROM T_GATE_INFO S
LEFT JOIN T_AREA WA
ON S.WORK_AREA_ID = WA.WORK_AREA_ID
LEFT JOIN T_COMNY B
ON WA.OWN_COMNY = B.DEP_ID
LEFT JOIN T_GATEWAY_CLIENT C
ON S.GATE_ID = C.CLIENT_ID
LEFT JOIN T_USR U
ON S.MODIER = U.UR_ID
LEFT JOIN TSER U2
ON S.CREATOR = U2.USER_ID
WHERE
S.GAT_ID = '123'