MYSQL 联表更新和删除

update/delete  where in select 当in的数量过大给性能带来很大问题

 

联表更新

Java代码  

  1. UPDATE items,month SET items.price='12' WHERE items.id=month.id;  
  2. UPDATE a LEFT JOIN b on a.id=b.a_id SET a.title='aaaaa',b.body='bbbb' WHERE a.id=1  

注意:多表 UPDATE 不可以使用 ORDER BY 或 LIMIT。

 

联表删除

从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉

Java代码  

  1. DELETE t1 FROM t1,t2 WHERE t1.id=t2.id   
  2. //DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id  

 从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉

Java代码  

  1. DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL   
  2. //DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL  

 从两个表中找出相同记录的数据并把两个表中的数据都删除掉

Java代码  

  1. DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25  

 注意此处的delete t1,t2 from 中的t1,t2不能是别名

时间: 2024-12-02 12:29:19

MYSQL 联表更新和删除的相关文章

MYSQL多表更新删除以及和ORACLE的对比

MYSQL多表更新操作, 一般来说这类操作可以用IN和NOT IN,至少在ORACLE中可以这样做,ORACLE对IN和NOT IN的优化程度很高 一般使用SEMI JOIN和ANTI JOIN进行半连接,抛弃不需要的行,但是MYSQL在这方面性能还是有一些问题, 所以建议使用连接的方式如下,对于联合UPDATE ORACLE可以使用MERGE来代替比如 update a,b set a.name=b.name where a.id=b.id; ORACLE是没有这种语法的,一句话MYSQL的连

MYSQL 多表查询、删除、更新一些sql语句

例  代码如下 复制代码 SELECT cat.`name` , class.`title` FROM `cat` , `class` WHERE cat.`id` = class.`cat` AND cat.`id` =2 LIMIT 0 , 30 DELETE cat, class FROM cat, class WHERE cat.`id`=class.`cat` AND cat.`id`=1 多表更新在 MySQL 3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更

mysql 修改表/字段 增加/删除表索引

mysql教程 修改表/字段 增加/删除表索引 create table test (blob_col blob, index(blob_col(10)));在mysql 5.1中,对于myisam和innodb表,前缀可以达到1000字节长.请注意前缀的限制应以字节为单位进行测量,而create table语句中的前缀长度解释为字符数.当为使用多字节字符集的列指定前缀长度时一定要加以考虑. 还可以创建fulltext索引.该索引可以用于全文搜索.只有myisam存储引擎支持fulltext索引

Mysql跨表更新 多表update sql语句总结_Mysql

假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%. 在Mysql中我们有几种手段可以做到这一点,一种是update table1 t1, table2 ts ...的方式: 复制代码 代码如下: UPDATE product p, productPrice pp SET pp.price = pp.price * 0.8 WHER

mysql数据库实现关联表更新sql语句

比如有两张表,其中一张表某个字段的值要关联另一张表进行统计,就要用到mysql的update方法,并且left join另一张表进行联合查询. 表1 表2 需求是:统计表1中id,也就是表2中的tagid出现的次数,更新到表1的videonum字段中.这时候需要关联两张表更新表1并且进行统计. mysql关联表更新统计 sql语句如下:  代码如下 复制代码 UPDATE v9_keyword as a LEFT JOIN v9_keyword_data as b on a.id=b.tagid

Mysql数据库中创建、删除用户并授权给数据库

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名为:test 密码为:

mysql 多表关联更新/删除sql语句

1.mysql 多表关联delete中使用别名,tblwenhq是真实的表名,a是tblwenhq的别名,b是另一个表名  代码如下 复制代码 DELETE  a FROM tblwenhq a,b where a.id=b.id 2.使用mysql进行delete from操作时,若子查询的 FROM 字句和更新/删除对象使用同一张表,会出现错误. DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 ); ERROR 109

mysql 跨表查询、更新、删除示例_Mysql

下面来谈谈跨表插入,更新和删除 首先讨论的是跨表查询: insert into `table_A` select * from `table_B`;注意*代表全部插入. 接着又讨论关于跨表更新 复制代码 代码如下: update `table_A`, `table_B` set `table_A`.`name` = `table_B`.`name` where `table_A`.`id` = `table_B`.`id`;

Mysql学习心得之插入、更新、删除记录_Mysql

下面通过图文并茂的方式给大家详解Mysql学习心得之插入.更新.删除记录. 插入记录 复制代码 代码如下: Insert[]into] tb1_name[(col_name,-..)] 自动编号的字段,可以用values default Default 可以赋予默认值 复制代码 代码如下: INSERT USERS VALUES(NULL,'TOM','123',25,1); 可以同时插入多条记录 复制代码 代码如下: INSERT users VALUES(DEFAULT,'TOM','123