a表
left join
b表
时必定连接一张表
(a表永远保留
,操作的全是b表)
(1)如果on条件作用在b表字段上,则不符合条件的时候,当前b表所有的内容都清空
(2)如果加on条件作用在a表字段上,则不符合条件的时候,清空当前b表的所有记录
(3)where条件是作用在连接后的复合表的记录(a、b表当成一个整体),不符合条件,直接删除这条组合记录
table : STUDENT(id, name); CLASS(id, class):
id name id class
1 "张三" 1 no.1
2 “李四” 2 no.2
3 “王五” 3 no.2
4 "赵六"
Sql语句1: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id AND s.name="张三";
id name class
1 "张三" no.1
2 “李四” (不符合条件清空)
3 “王五” (不符合条件清空)
4 "赵六" (不符合条件清空)
Sql语句2: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id AND c.class="no.2";
id name class
1 "张三" (不符合条件清空)
2 “李四” no.2
3 “王五” no.2
4 "赵六" (不符合条件清空)
Sql语句3: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id WHERE s.name="张三";
id name class
1 "张三" no.1
(不符合条件清空)
(不符合条件清空)
(不符合条件清空)
Sql语句4: SELECT a.id, a.name, b.class FROM STUDENT AS s LEFT JOIN CLASS AS c ON s.id=c.id WHERE c.class="no.2";
id name class
(不符合条件清空)
2 “李四” no.2
3 “王五” no.2
(不符合条件清空)
******************************************************
inner join 只有符合条件的数据才显示 ON 和WHERE 作用相同
Sql语句5: SELECT a.id, a.name, b.class FROM STUDENT AS s INNER JOIN CLASS AS c ON s.id=c.id AND s.name="张三";
id name class
1 "张三" no.1
(不符合条件清空)
(不符合条件清空)
(不符合条件清空)
Sql语句6: SELECT a.id, a.name, b.class FROM STUDENT AS s
INNER
JOIN CLASS AS c ON s.id=c.id AND c.class="no.2";
id name class
(不符合条件清空)
2 “李四” no.2
3 “王五” no.2
(不符合条件清空)
Sql语句7: SELECT a.id, a.name, b.class FROM STUDENT AS s
INNER
JOIN CLASS AS c ON s.id=c.id WHERE s.name="张三";
id name class
1 "张三" no.1
(不符合条件清空)
(不符合条件清空)
(不符合条件清空)
Sql语句8: SELECT a.id, a.name, b.class FROM STUDENT AS s
INNER
JOIN CLASS AS c ON s.id=c.id WHERE c.class="no.2";
id name class
(不符合条件清空)
2 “李四” no.2
3 “王五” no.2
(不符合条件清空)
分享到:
相关推荐
Join on/inner join on/full join on/full outer join on/left join on/right join on/cross join on; 在使用jion时,on和where条件的区别;
以下是对在sql语句中left_join、inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下
第一种inner join: 第二种left join: 第三种right join: 第四种left join where b.id is null: 第五种
[t0].[Discontinued] FROM [dbo].[Products] AS [t0] LEFT OUTER JOIN [dbo].[Suppliers] AS [t1] ON [t1].[SupplierID] = [t0].[SupplierID] WHERE ([t1].[Country] = @p0) AND ([t0].[UnitsInStock] = @p1) -- @p0...
表名1 INNER JOIN 表名2 USING (列名) [WHERE 条件表达式] 外连接语法格式如下: 表名1 LEFT| RIGHT JOIN 表名2 USING (列名) [WHERE 条件表达式] ; 【例】 查找Members表中所有订购过图书的会员的姓名。 SELECT ...
left join seorder as t4 on t4.finterid=t3.forderinterid where isnull(t4.fbillno,'no')<>'no' and t2.finterid=@finterid240 return end --控制委外加工生产任务单领料日期不对小于计划开工日期 if (@...
… FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 通常称为左表,table2 称为右表。ON 关键字用于设定匹配条件,用于限定在结果集合中想要哪些行。如果需要指定其他条件,后面可以加上 WHERE 条件...
7、7、尽量避免在索引列上使用mysql的内置函数,8、应尽量避免在 where 子句中对字段进行表达式操作,这将导致系统放弃使用索引而进行全表扫,9,Inner join 、left join、right join,优先使用Inner join,如果是...
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition 更详细地看看MySQL UPDATE JOIN语法: 首先,在UPDATE子句之后,指定主表(T1)和希望主表连接表(T2)。 第二,指定...
订单日期 FROM 客户 INNER JOIN 订单 ON 客户.客户编号 = 订单.客户编号 11-2 查询指令 多资料表查询指令 LEFT及RIGHT JOIN SELECT 客户.公司名称, 客户.连络人姓名, 订单.客户编号 FROM 客户 LEFT JOIN 订单 ON...
由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢。一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN 2. 内连接INNER ...
减少JOIN的数量和规模,优先考虑INNER JOIN和LEFT JOIN。 使用EXISTS替代IN子句提高效率。 数据类型与查询优化 适当的数据类型选择: 根据实际数据范围和精度选择合适的数值类型。 避免过度使用TEXT/BLOB类型,可能...
grant update,delete on mydb.TestTable to NewUserName@HostName identified by “password”; 若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表...
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 12、说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f...
db({select: 'avg(t_main) as average, sum(t1.amount) as total',from: 't_main',join: [{inner: 't_join1 t1', on: 't1.main_id = t_main.id'}, {left: 't_join2 t2', on: 't2.join_id = t1.id'}],where: ['t1....
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password"; 若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表添加的...
SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Union SQL Select Into SQL Create DB SQL Create Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key ...
SELECT * FROM User INNER JOIN Event USING (userid); 控制JOIN的顺序 JOIN声明中并不要求做插入,但你可以在涉及多于两个表格时使用插入来改变JOIN声明的顺序。通常地,JOIN声明或者从左至右处理(以在查询中...