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 # 来确保只有给定的记录行数目被更改。

如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持),记录行将以指定的次序被更新。这实际上只有连同 LIMIT 一起才有用。

从 MySQL 4.0.4 开始,你也可以执行一个包含多个表的 UPDATE 的操作:

 代码如下 复制代码

UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

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

多表删除
第一个多表删除格式从 MySQL 4.0.0 开始被支持。第二个多表删除格式从 MySQL 4.0.2 开始被支持。

仅仅在 FROM 或 USING 子句 之前 列出的表中的匹配记录行被删除。效果就是,你要以从多个表中同时删除记录行,并且同样可以有其它的表用于检索。

在表名后的 .* 仅仅是为了兼容 Access:

 代码如下 复制代码

DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

or

DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

在上面的情况下,我们仅仅从 t1 和 t2 表中删除匹配的记录行。

如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持), 记录行将以指定的次序删除。这实际上只有连同 LIMIT 一起才有用。示例如下:

 代码如下 复制代码

DELETE FROM somelog
WHERE user = ‘jcole’
ORDER BY timestamp
LIMIT 1

这将删除匹配 WHERE 子句的,并且最早被插入(通过 timestamp 来确定)的记录行。

DELETE 语句的LIMIT rows 选项是 MySQL 特有的,它告诉服务器在控制权被返回到客户端之前可被删除的最大记录行数目。这可以用来确保一个特定的 DELETE 命令不会占用太长的时间。你可以简单地重复使用 DELETE 命令,直到被影响的记录行数目小于 LIMIT 值。

从 MySQL 4.0 开始,在 DELETE 语句中可以指定多个表,用以从一个表中删除依赖于多表中的特殊情况的记录行。然而,在一个多表删除中,不能使用 ORDER BY 或 LIMIT。

时间: 2024-09-20 00:01:48

MYSQL 多表查询、删除、更新一些sql语句的相关文章

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替换表中的字符串的sql语句_Mysql

核心语句: UPDATE `cdb_pms` SET `subject` = REPLACE(`subject`, 'Welcome to', '欢迎光临') mysql替换字段里数据内容部分字符串 mysql替换表的字段里面内容,如例子: mysql> select host,user from user  where user='testuser'; +-----------------------+----------+ | host                  | user    

mysql-难到初学者的MySQL多表查询问题

问题描述 难到初学者的MySQL多表查询问题 本人初学java.请各位大牛帮帮忙. 学生表student (stu_id ,stu_name ): 课程表course (c_id,c_name): 成绩表score (stu_id ,c_id,score): 1.在学生表中添加一条数据: 2.查询名字为Tom的学生所选的课程: 3.查询stu_id为3的学生所学课程的成绩 解决方案 insert into student values(id,name); select course.c_name

mysql多表查询连接问题,

问题描述 mysql多表查询连接问题, 题目:查询平均成绩在80分及以上的所有学生的学号及平均成绩并按平均成绩降序排列. SELECT s1.sno FROM student s1,class c1,timetable t,course c2,score s2 WHERE s1.classid = c1.classid AND c1.classid = t.classid AND t.courseid = c2.courseidAND c2.courseid = s2.courseid; 写到这

mysql多表查询,在线等

问题描述 mysql多表查询,在线等 四张表A B C D每个表的primary key都是id,D有个C_id对应C的id,C有个B_id对应B的id,B有个A_id对应A的id,要查询A中的name和对应的D中的age,怎么查询呢? 解决方案 select A.name,D.age from A,B,C,D where D.C_id=C.id and C.B_id=B.id and B.A_id=A.id; 你可以使用该语句试试. 解决方案二: A左连接B,B.C一般的查询,D右连接C 试试

解析Mysql多表查询的实现_Mysql

查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看.Mysql多表查询: 复制代码 代码如下: CREATE TABLE IF NOT EXISTS contact( contact_id int(11) NOT NULL AUTO_INCREMENT, user_name varchar(255), nom varchar(255), prenom varchar(255), mail varchar(64), passcode

sqlserver查询所有表的行数的sql语句

原文:sqlserver查询所有表的行数的sql语句   select object_name(id),rowcnt from sysindexes where indid<2 and objectproperty(id,'ismsshipped')=0 order by rowcnt desc select a.name, b.rows from sysobjects a inner join sysindexes b on a.id = b.id where a.type = 'u' and

mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法

 有时候,我们需要复制某个字段一整列的数据到另外一个新的字段中,或是需要把某个表的某个字段的值跨表复制到另一个表中的某个字段,本文就罗列了一些SQL语句写法,需要的朋友可以参考下   需求:把一个表某个字段内容复制到另一张表的某个字段.   实现sql语句1:     代码如下: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_manager_folder f2      ON f1.name = f2.name AND f2.parentI

删除重复数据sql语句

删除重复数据sql语句 方法一 假设有重复的字段为name,address,要求得到这两个字段唯一的结果集 select identity(int,1,1) as autoid, * into #tmp from tablename select min(autoid) as autoid into #tmp2 from #tmp group by name,autoid select * from #tmp where autoid in(select autoid from #tmp2) 方

删除重复记录 sql语句

删除重复记录 sql语句 本教程为你提供了二款关于删除重复记录的sql语句代码.一个利用where in查询重复记录再实现删除,一个是用inner join来实例删除重记录. */ //方法一 delete from tablea where title in (select a.title from tablea a join tableb b on a.title = b.title) //方法二 delete a.* from tablea a inner join tableb b on