多表联查——三个表

简单介绍下多表联查种类
两个表A和B
1、内连接查询 (只显示符合条件的数据)
关键语句 INNER JOIN 【表名】 ON

SELECT
	znlb.tb_route.id,
	znlb.tb_dev.sbmc,
    znlb.tb_dest.destname,
    znlb.tb_route.route,
    znlb.tb_route.angle
FROM
	znlb.tb_route
INNER JOIN znlb.tb_dev ON
	znlb.tb_route.fromdev=znlb.tb_dev.sbid
INNER JOIN znlb.tb_dest ON
    	znlb.tb_route.destID=znlb.tb_dest.id
WHERE
    	znlb.tb_dev.sbid='1001'
ORDER BY
            	znlb.tb_route.id
ASC

一些提示:

SELECT 与 FROM 之间填写要查询表的的数据,要查询全部就可以用*号表示
FROM 后表示从那个表开始查询
INNER JOIN 与 ON 之间填写与那个表进行查询(INNER表示取交集,LEFT表示取左边,RIGHT表示取右边)
ON 后表示两个表的判断条件
WHERE 后表示查询完后,输出数据的判断条件
ORDER BY 与 ASC 之间表示根据什么显示(ASC递增,DESC递减)

2、 左外连接查询 (左边表中的数据优先全部显示)
关键语句 LEFT JOIN 【表名】ON

3、 右外连接查询 (右边表中的数据优先全部显示)
关键语句 RIGHT JOIN 【表名】 ON

4 、全连接查询(显示左右表中全部数据)
关键是UNION,一个使用LEFT,一个使用RIGHT

SELECT
	*
FROM
	znlb.tb_route
LEFT JOIN znlb.tb_dest ON
	znlb.tb_route.destID=znlb.tb_dest.id
UNION
SELECT
	*
FROM
	znlb.tb_route
RIGHT JOIN znlb.tb_dest ON
	znlb.tb_route.destID=znlb.tb_dest.id

destdevroute多表查询查询时会出现重复,本来只有一个对应但是查出来全部都对应,显示查询重复,百度一下原来是数据库语句不是正确,使用了笛卡尔数据库查询(自行百度)即,一表m个数据,一表n个数据,显示(m*n)个数据
查重最后解决办法:不要在ON后面跟进实际判断,显示对应判断,然后在WHERE后跟进实际判断,即可消除重复,如图:
WHERE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值