MySQLUSING关键词USING()函数的使⽤今天看公司代码看到这条SQL语句,感觉挺有意思,之前从未使⽤过的Using关键词。
DELETE FROM tve USING TRIPS_VERIFICATION tve,TRIP t WHERE tve.TRIP_ID=t.ID AND t.SERVICE_DAY = ?
百度后发现只有USING()函数的⽤法,并没有单独的USING关键词的使⽤。sql中delete用法
mysql中using的⽤法为:
using()⽤于两张表的join查询,要求using()指定的列在两个表中均存在,并使⽤之⽤于join的条件。
⽰例:
select a.*, b.* from a left join b using(colA);
等同于:
select a.*, b.* from a left join b lA = b.colA;
根据SQL猜测这条语句的主要⽬的是:A 连B表,根据B表的条件,删除A表的数据(B表的数据不会删除)
。
验证:
新建student表(id,姓名,性别)
新建socre表(id,成绩,学⽣id)
操作1:删除成绩为90的学⽣信息(A 连B表,根据B表的条件,删除A表的数据)
按照⾃⼰想法写的SQL:
DELETE FROM student t LEFT JOIN score s ON t.id = s.st_id WHERE s.score = 90;
发现语句报错(可能是⾃⼰本⾝SQL有问题,或者本来也不⽀持这样的操作):
模仿着公司的代码写SQL:
DELETE FROM t USING student t ,score s WHERE t.id = s.st_id AND s.score = 90;
发现执⾏成功(Affected rows: 1):
1、score表数据没有删除
2、成绩为90的student信息删除了
再次验证:
操作2:删除score表中,性别为‘m’的数据。
SQL:
DELETE FROM s USING student t,score s WHERE t.id = s.st_id AND t.sex ='m';
执⾏后发现性别为m的所有数据被删除了:
因此验证:A 连B表,根据B表的条件,删除A表的数据(B表的数据不会删除)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论