MySQL中JOIN的用法(简化明确版)

MySQL中JOIN的用法(简化明确版)

MySQL中涉及到多表连接的话,可以使用如下几种JOIN

1. ','逗号运算符
例如
SELECT * FROM table1,table2 WHERE where_condition

2. [CROSS | INNER] JOIN (交叉连接和内连接,结果都是产生笛卡尔积,但在标准SQL中两者
<wbr></wbr>是不同的,可以参看上篇介绍)
例如
SELECT * FROM table1 JOIN table2 ON table1.column_1=table2.column_2 WHERE table1.column_1='something'
或者
SELECT * FROM table1 AS a JOIN table2 AS b ON a.column_1=b.column_2 WHERE a.column_1='something'
或者
SELECT * FROM table1 JOIN table2 USING (column) WHERE table1.column='something ' (当被连接的两个表的连接列名称相同的话)

3. LEFT [OUTER] JOIN (或者RIGHT [OUTER] JOIN) (左外连接,或者右外连接)
例如
SELECT * FROM table1 LEFT JOIN table2 ON table1.column_1=table2.column_2 WHERE table1.column_1='something'
或者
SELECT * FROM table1 AS a LEFT JOIN table2 AS b ON a.column_1=b.column_2 WHERE a.column_1='something'
或者
SELECT * FROM table1 LEFT JOIN table2 USING (column) WHERE table1.column='something' (当被连接的两个表的连接列名称相同的话)


可以在后面指定连接条件
1. ON 之后跟连接条件,如果连接的列名称相同的话,可以使用USING
2. WHERE后指定限定条件,指定限制的列,例如:WHERE table1.column='hello'

涉及到多表查询的时候,可以考虑以上3中方式,然后使用EXPLA<wbr></wbr>IN查看MySQL处理这三种语句的搜索复杂度,从而采用更好的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL,LEFT JOIN是一种连接查询的方法,用于返回左表的所有记录以及与右表匹配的记录。左表是指在LEFT JOIN语句位于LEFT JOIN关键字之前的表,右表则是指LEFT JOIN关键字之后的表。 LEFT JOIN的语法格式如下: SELECT 列名 FROM 左表 LEFT JOIN 右表 ON 连接条件; LEFT JOIN的工作原理是将左表的每一行与右表进行比较,并返回满足连接条件的行记录。如果左表的某行没有与之匹配的右表记录,则结果集将包含NULL值。 LEFT JOIN的应用场景之一是行记录信息补全。它可以将一个子查询或多个case查询转换为一个大查询,从而简化编程复杂度和提高性能。例如,可以使用LEFT JOIN来查找没有BOM的成品。下面是一个示例查询语句: SELECT DISTINCT a.sid, a.goods_id, a.goods_no, a.goods_type, a.goods_name, a.spec FROM base_goods a LEFT JOIN base_goods_bom e ON a.goods_id = e.goods_id AND e.co_id = '10' AND e.status ='有效' WHERE a.co_id = 10 AND a.is_deleted = 'N' AND a.goods_type = '成品' AND a.is_onsale = 'Y' AND e.goods_id IS NULL; 在上述查询,LEFT JOIN将base_goods表和base_goods_bom表进行连接,连接条件是a.goods_id = e.goods_id,并且限制了e.co_id为'10'和e.status为'有效'。然后,使用WHERE子句来过滤出没有BOM的成品,即e.goods_id为NULL的记录。 请注意,使用LEFT JOIN时需要注意连接条件的准确性和结果集的处理,以确保查询结果符合预期。另外,为了提高查询性能,可以对涉及的表添加合适的索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值