My Sql多表操作(转载)
DELETE
在Mysql4.0之后,mysql开始支持跨表delete。
Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录。
假定我们有两张表:Product表和ProductPrice表。前者存在Product的基本信息,后者存在Product的价格。
第一种跨表删除的方式是不用join,在delete时指定用半角逗号分隔多个表来删除
DELETE p.*, pp.*
FROM product p, productPrice pp
WHERE p.productId = pp.productId
AND p.created < '2004-01-01'
第二种跨表删除的方式是使用inner join在join中指定两表之间的关联关系,如下sql语句:
DELETE p.*, pp.*
FROM product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
WHERE p.created < '2004-01-01'
注意:跨表删除不必删除所有表的数据,上面的sql语句表会同时删除Product和ProductPrice两张表中的数据,但是你可以指定 DELETE product.*从而只删除product表中的记录,而不处理ProductPrice表中的记录。
跨表删除也可以使用left join,例如我们要删除所有在ProductPrice表中没有记录的Product表记录。如下sql语句:
DELETE p.*
FROM product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
WHERE pp.productId is null
UPDATE
假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。
在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts ...的方式:
代码如下:
SET pp.price = pp.price * 0.8
WHERE p.productId = pp.productId
AND p.dateCreated < '2004-01-01'
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8
WHERE p.dateCreated < '2004-01-01'
LEFT JOIN productPrice pp
ON p.productId = pp.productId
SET p.deleted = 1
WHERE pp.productId IS null
INNER JOIN productPrice pp
ON p.productId = pp.productId
SET pp.price = pp.price * 0.8,
p.dateUpdate = CURDATE()
WHERE p.dateCreated < '2004-01-01'
最新文章
- qq2440启动linux后出现错误提示request_module: runaway loop modprobe binfmt-464c
- python的web压力测试工具-pylot安装使用
- Linux C 程序 函数,数组,指针,gdb调试器(SEVEN)
- RPC简介与Thrift框架
- java cooki的使用
- php小测试,难点与分享
- 移动端APP列表点透事件处理方法
- linux dhcp搭建及pxe无人值守装机
- 2017-2018-1 20155214&;20155216 实验四:外设驱动程序设计
- 简明shell入门
- App引导界面,可以这么玩
- 【bzoj 2326】【HNOI 2011】数学作业
- [Swift]LeetCode78. 子集 | Subsets
- orm 复习
- js之作用域链到闭包
- 人工智能(AI)库TensorFlow 踩坑日记之一
- plist反序列化
- JavaScipt 中的事件循环(event loop),以及微任务 和宏任务的概念
- Apache tica详述
- 人生第一次JAVA编程,电梯(并不算完成版),以及IDEA里使用git
热门文章
- MySQL中函数、游标、事件、视图基本应用举例(代码)
- Introduction to SharePoint hierarchy
- MFC中菜单变灰的问题
- CXF.bat
- (Python学习9)Python虚拟机中的一般表达式
- 用docker cluster store实现kuryr的共享subnet
- VS2013提示error C4996: &#39;strcat&#39;: This function or variable may be unsafe. Consider using strcat_s instead.
- [ios2]iOS 图片与内存 【转】
- PHP定义静态方法的原则
- mysql版本,根据经纬度定位排序sql