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 1093 (HY000): You can’t specify target table ‘tab1′ for update in FROM clause

正确用法:DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 as a);

表关联Update笔记

 代码如下 复制代码

UPDATE b,a SET b.public=a.public WHERE b.id=a.id

对单表执行更新没有什么好说的,无非就是update table_name set col1 = xx,col2 = yy where col = zz,主要就是where条件的设置。有时候更新某个表可能会涉及到多张数据表,例如:

 代码如下 复制代码

update table_1 set score = score + 5 where uid in (select uid from table_2 where sid = 10);

其实update也可以用到left join、inner join来进行关联,可能执行效率更高,把上面的sql替换成
join的方式如下:

 代码如下 复制代码

update table_1 t1 inner join table_2 t2 on t1.uid = t2.uid set score = score + 5 where t2.sid = 10;

例1

MySQL多表关联数据同时删除

category(栏目信息表)和news(新闻数据表)。

category中的id(栏目编号)字段作为该表的主键(primary key).唯一标识了一个栏目的信息。
news 中的id字段作为该表的主键(primary key).唯一标识了一个栏目的信息。

category_id(栏目编号)字段与category表的id字段相关联。

1.SQL删除语句

 代码如下 复制代码

delete category,news from category left join news on category.id = news.category_id

时间: 2024-12-23 12:23:22

mysql 多表关联更新/删除sql语句的相关文章

mysql 改变表table的字符集sql语句

正确的改变table字符集的语句是: alter table xxx convert to character set utf8; 而不是想当然的: alter table xxx default charset utf8; 字符集从GBK转成utf8, 会增大字段所占用的空间,有可能会改变字段的类型: 比如text有可能会自动变成medium text 但是varchar没有自动变成medium text. 下面看测试: 建一张GBK的表: mysql> SHOW CREATE TABLE x

SQL update 多表关联更新的实现代码

实现多表更新,尤其是A表和A的子表B表数据更新,下面是例子 有A.B张表,其记录如下: A表 c1       c2 -------------- 1       a1 2       a2 3       a3 8       a8 B表 c1       c3 -------------- 1        b1 2        b1 3        b3 10      b10 A.c1与B.c1相等,用一条sql语句,实现A.c2的值更新为B.c3 -----------------

Oracle\MS SQL Server Update多表关联更新

原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表   一.MS    SQL    Server   多表关联更新      sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就

oracle语句-有关两张表关联查询的sql问题

问题描述 有关两张表关联查询的sql问题 各位大神,一个sql问题请教下 有两张表,分别如下: 充值表t_recharge字段: userId.recharge_money.recharge_count 消费表t_consume字段: userId.consume_money.consume_count 现在的情况是用户可能只存在充值记录或者只存在消费记录,只存在充值记录时,消费记录显示0,只存在消费记录时,充值记录显示0 现在想查出这种结果: userId recharge_money rec

mysql多表关联查询,增加了排序速度慢??

问题描述 mysql多表关联查询,增加了排序速度慢?? 这些是表的结构: CREATE TABLE rs_emp (EmpSysID varchar(36) NOT NULL,EmpNo varchar(20) NOT NULL,EmpName varchar(50) NOT NULL DEFAULT '',EmpSexSysID varchar(36) DEFAULT NULL,CardTypeSysID varchar(36) DEFAULT NULL,RateSysID varchar(3

MySQL开启记录执行过的SQL语句方法

  这篇文章主要介绍了MySQL开启记录执行过的SQL语句方法,配置的方法很简单,本文直接给出配置示例,需要的朋友可以参考下 概述 很多时候,我们需要知道 MySQL 执行过哪些 SQL 语句,比如 MySQL 被注入后,需要知道造成什么伤害等等.只要有 SQL 语句的记录,就能知道情况并作出对策.服务器是可以开启 MySQL 的 SQL 语句记录功能,从而就能间接地检测到客户端程序的行为. 方法 开启方法很简单:编辑/etc/my.cnf文件,在[mysqld]节下面添加:log=/var/l

select-在C#的combobox中显示数据库中所有的表名,但是sql语句不知道怎么写

问题描述 在C#的combobox中显示数据库中所有的表名,但是sql语句不知道怎么写 List<string> tableNames = "Select( (string)x["Table_Name"] from dt where type=1 and flags=0)"; dt是连接数据库时设定的表名 解决方案 sql语句如下所示:SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' 前提是提前设置好config配置文

MySQL存储过程中实现执行动态SQL语句的方法_Mysql

本文实例讲述了MySQL存储过程中实现执行动态SQL语句的方法.分享给大家供大家参考.具体实现方法如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE set_col_value -> (in_table VARCHAR(128), -> in_column VARCHAR(128), -> in_new_value VARCHAR(1000), -> in_where VARCHAR(4

MySQL多表关联数据同时删除sql语句

DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:  代码如下 复制代码 1    delete from t1 where 条件 2    delete t1 from t1 where 条件 3    delete t1 from t1,t2 where 条件 4    delete t1,t2 from t1,t2 where 条件 category(栏目信息表)和news(新闻数据表). category中的id(栏目编号)字段作为该表的主键(primar