精华内容
下载资源
问答
  • mysql更新语句sql一、单表更新:UPDATE table name SET name.column_name = new_value ...二、多表更新: 1.级联更新 UPDATE product p, product_price pp SET pp.price = pp.price * 0.8 WHERE p.pr

    mysql更新语句sql

    一、单表更新:

    UPDATE table  name
    SET name.column_name = new_value
    WHERE name.column_name = some_value;

    二、多表更新:

    1.级联更新
    UPDATE product p, product_price pp  
    SET pp.price = pp.price * 0.8  
    WHERE p.productId = pp.productId  
    AND p.dateCreated < '2014-01-01';
    
    2.使用inner Join 或者 left Join更新
    UPDATE product p  
    INNER JOIN product_price pp  
    ON p.productId = pp.productId  
    SET pp.price = pp.price * 0.8  
    WHERE p.dateCreated < '2014-01-01';
    
    UPDATE product p  
    LEFT JOIN product_price pp  
    ON p.productId = pp.productId  
    SET pp.price = pp.price * 0.8 
    WHERE p.dateCreated < '2014-01-01';
    
    3.关联子查询
    UPDATE product_price pp
    SET pp.price = pp.price * 0.8
    WHERE
        pp.productId IN (
            SELECT
                p.productId
            FROM
                product p
            WHERE
                p.dateCreated < '2014-01-01'
        );
    

    总结: 个人建议第三种,效率高

    展开全文
  • 多表更新

    多表更新
    在 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。
    假设有两个表,tab1,tab2,分别有产品名称和产品价格,现在我想用tab2的价格替换tab1的价格,我写的语句是Update tab1 set tab1.产品价格=tab2.产品价格 where tab1.产品名称=tab2.产品名称
    结果出现错误,提示为:列前缀 ‘tab2’ 与查询中所用的表名或别名不匹配。请问应该怎样写,

    SQL语句是不支持多表同时更新的。

    应该这样写

    update tab1 set tab1.产品价格 = (select tab2.产品价格 from tab2 where tab2.产品名称 = tab1.产品名称) where tabl1.产品名称 in (select tab2.产品名称 from tab2)

    后面的where tab1.产品名称 in (select tab2.产品名称 from tab2) 这句保证了如果tab1的产品在tab2没有记录时不会出错。

    在 开发中,数据库来回换,而有些关键性的语法又各不相同,这是一件让开发人员很头痛的事情.本文总结了Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库中的用法.我也试了SQLite数据库,都没成功,不知是不支持多表更新还是咋的.

    在本例中:

    我们要用表gdqlpj中的gqdltks,bztks字段数据去更新landleveldata中的同字段名的数据,条件是当landleveldata 中的GEO_Code字段值与gdqlpj中的lxqdm字段值相等时进行更新.

    SQL Server语法:
    UPDATE
    {
    table_name WITH ( < table_hint_limited > [ …n ] )
    | view_name
    | rowset_function_limited
    }
    SET
    { column_name = { expression | DEFAULT | NULL }
    | @variable = expression
    | @variable = column = expression } [ ,…n ]

      { { [ FROM { < table_source > } [ ,...n ] ] 
    
          [ WHERE 
              < search_condition > ] } 
          | 
          [ WHERE CURRENT OF 
          { { [ GLOBAL ] cursor_name } | cursor_variable_name } 
          ] } 
          [ OPTION ( < query_hint > [ ,...n ] ) ] 
    

    SQL Server示例:
    update a
    set a.gqdltks=b.gqdltks,a.bztks=b.bztks
    from landleveldata a,gdqlpj b
    where a.GEO_Code=b.lxqdm

    Oracle语法:
    UPDATE updatedtable
    SET (col_name1[,col_name2…])=
    (SELECT col_name1,[,col_name2…]
    FROM srctable [WHERE where_definition])

    Oracel 示例:
    update landleveldata a
    set (a.gqdltks, a.bztks)=
    (select b.gqdltks, b.bztks from gdqlpj b
    where a.GEO_Code=b.lxqdm)

    MySQL语法:
    UPDATE table_references
    SET col_name1=expr1 [, col_name2=expr2 …]
    [WHERE where_definition]

    MySQL 示例:
    update landleveldata a, gdqlpj b
    set a.gqdltks= b.gqdltks,
    a.bztks= b.bztks
    where a.GEO_Code=b.lxqdm

    转自 http://www.cnblogs.com/andy_tigger/archive/2011/05/11/2043483.html

    展开全文
  • mysql批量更新、多表更新、多表删除 本文介绍下,mysql中进行批量更新、多表更新、多表删除的一些实例,有需要的朋友可以参考下。 本节主要内容: mysql的批量更新、多表更新、多表删除 一,批量...
    本文介绍下,mysql中进行批量更新、多表更新、多表删除的一些实例,有需要的朋友可以参考下。

    本节主要内容:
    mysql的批量更新、多表更新、多表删除

    一,批量更新:
     

    复制代码代码示例:
    update tepoi,pinf set tepoi.x=pinf.fx,tepoi.y=pinf.fy
    where tepoi.pid=pinf.dmgis_id and tepoi.pid>10000;

    假设有表a,b,其结构为:
     

    复制代码代码示例:
    a(id,email,name)   b(id,email)
    update   a inner join   b on a.id=b.id set
    update tableA inner join tableB on tableA.FieldA=tableB.FieldB(update中使用inner join)
    set
    tableA.字段=值,
    tableB.字段=值

    二,多表更新
    在 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。
    本文原始链接:http://www.jbxue.com/db/13130.html

    posted on 2013-10-29 06:24 snowfly123 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/linuxnotes/p/3393564.html

    展开全文
  • mysql单表更新及多表更新

    万次阅读 2014-05-08 17:23:10
    多表更新 update `table1` a,`wms1.0_tablename` b set a.grouping=b.grouping,a.size=b.size,a.description=b.description where a.catalog=b.catalog and a.`schema`=b.`schema` and a.name=b.name

            历经Oracle,MS SQL Server,到现在的MySQL,跨越了3种资料库的学习与研究,现在对于MySQL的表更新,单表字段更新与其他类型的RDBMS资料库一样,多表级联更新还是有些区别的,不过研究过后,发现还是蛮简单的。

           如果对你有所帮助,请回复一下,给个赞!

    UPDATE 语句用于中修改数据库表中的数据。

    更新数据库中的数据

    UPDATE 语句用于在数据库表中修改数据。

    语法

    UPDATE table_name
    SET column_name = new_value
    WHERE column_name = some_value
    

    注释:SQL 对大小写不敏感。UPDATE 与 update 等效。


    这里,关联的两张表为:tablename1、tablename2,如果需要进行关联更新tablename1里面的字段,

    update tablename1 a,tablename2 b 
    set a.grouping=b.grouping,a.size=b.size,a.description=b.description
    where a.catalog=b.catalog and a.`schema`=b.`schema` and a.name=b.name
    当然多表更新,还有其他的方法,具体方法说明如下:

    方法一:直接更新,同上面一样:

    UPDATE product p, productPrice pp
    SET pp.price = pp.price * 0.8
    WHERE p.productId = pp.productId
    AND p.dateCreated < '2014-01-01'

    方法二:使用inner Join,然后更新:

    UPDATE product p
    INNER JOIN productPrice pp
    ON p.productId = pp.productId
    SET pp.price = pp.price * 0.8
    WHERE p.dateCreated < '2014-01-01'

    方法三:使用left join,然后更新:

    UPDATE product p
    LEFT JOIN productPrice pp
    ON p.productId = pp.productId
    SET p.deleted = 1
    WHERE pp.productId IS null

    其实MySQL还可以同时更新两张表的数据的,如下:

    UPDATE product p
    INNER JOIN productPrice pp
    ON p.productId = pp.productId
    SET pp.price = pp.price * 0.8,
    p.dateUpdate = CURDATE()
    WHERE p.dateCreated < '2014-01-01'

    以上学习心得介绍到这里,如果对你有所帮助,请回复一下,给个赞!


    展开全文
  • Sql Update 多表更新

    2016-11-08 15:46:08
    Sql Update 多表更新
  • SQL Update多表更新

    2016-02-25 16:21:50
    SQL Update多表更新
  • sqlserver 多表更新

    2019-10-07 07:11:51
    sqlserver 多表更新 update bi_user_organization set bi_user_organization.bi_organization_id = b.id frombi_user_organization a, bi_organization_structure b where a.team=b.name 转载于:https://www.c...
  • MySql 实现多表更新

    2017-08-21 15:12:51
    MySql多表更新Mysql实现多表更新的几种不同方法: 1)update table1 t1, table2 t2 set…的方式:update table1 t1, table2 t2 set t1.price = t1.price * 0.8, t2.num = 100 where t1.order_id= t2.order_id and ...
  • UPDATE多表更新

    2014-06-25 10:04:17
    在开发中,数据库来回换,而有些关键性的...我也试了SQLite数据库,都没成功,不知是不支持多表更新还是咋的. 在本例中: 我们要用表gdqlpj中的gqdltks,bztks字段数据去更新landleveldata中的同字段名的数据,条件是当 la
  • sql 语法 多表更新

    2016-07-19 16:48:43
    --多表更新数据 update a表 set a表.单位编码=b表.单位编码 from 人员表 a表,单位编码 b表 where a表.地址=b表.地址 --删除 和查询 重复的信息 --查询 select * from A表 where 身份证 in( select 身份证 ...
  • 一、环境说明 oracle环境中,想对A表进行更新,对A表更新的字段来源于B表,涉及到多表更新,更新时提示“ora-01407:cannot update(XX.item_class) to NULL”,发现语句写得...
  • mysql多表更新

    2014-08-06 15:26:09
    一 语法: UPDATE 表1 AS a,  pj_order AS o, ...SET t.TRADE_REMARK = '测试多表更新' WHERE t.TRADE_ID = r.TRADE_ID AND o.ORDER_ID = r.ORDER_ID AND o.ORDER_TYPE = 'PROJ' AND o.PRODUCT
  • MySql多表更新方法:

    2018-04-11 16:57:29
    MySql多表更新方法: MySql语法: UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] 例子: UPDATE A a , B b SET a.a1 = b.b1 , a.a2 = b.b2 WHERE a.a3 = b....
  • Oracle多表更新

    千次阅读 2010-09-04 16:03:00
    <br /> 一日,在项目上要用到关联表的多表更新,尝试几种写法,均不对。网上查阅,原来是受了SQL SERVER的影响,写法是按SQL SERVER来的,而Oracle中不支持update 表名 set 字段名 from ...这样的写法,故...
  • SQL UPDATE实现多表更新

    2014-06-30 17:08:51
    在开发中,数据库来回换,而有些关键性的语法又各不相同,这是一件让开发人员很头痛的事情.本文总结了Update语句更新多表时在...我也试了SQLite数据库,都没成功,不知是不支持多表更新还是咋的. 在本例中: 我们要用表gdqlp
  • MySQL多表更新实例

    2012-02-28 15:08:25
    MySQL多表更新实例 更新`t_total`表中total列的结果:total减去与表`t_detail`中相应的model_name和year_month下的所有count的值。 1、建表 `t_total` -- ---------------------------- -- Table structure...
  • 多表更新服务

    2007-03-21 14:27:00
    多表更新服务 multitabel启用多表服务 u_dw.of_setmultitabel(true)注册需要更新的表 并指定更新表的主键inv_multitable.of_addtoupdate(表,列数组)resize服务启用服务 of_setresize(true)注册要启要服务的控件及...
  • MySQL联合多表更新和删除

    千次阅读 2015-07-11 16:39:17
    多表更新 在 MySQL 3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更改。  如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持),记录行将以指定的次序被更新。这实际上只有连同 LIMIT 一起才...
  • ![图片说明](https://img-ask.csdn.net/upload/201711/06/1509955878_786702.png) ![图片说明](https://img-ask.csdn.net/upload/201711/06/1509955905_25338.png) # 要求更新 T2中的LH_CODE
  • 数据窗口的多表更新

    2012-08-24 11:05:49
    数据窗口的多表更新(文/Kukoc) 原理分析: 数据窗口数据源来自两个或两个以上的表,相当于多个表连接建立的一个视图,对于这种数据窗口,PB默认是不能修改的。当然我们可以通过设置它的Update 属性,数据...
  • oracle多表更新

    千次阅读 2006-09-19 20:47:00
    ORACLE更新不带WHERE条件但ORACLE有子查询这么一个好东西。所以我们可以用子查询用下面的方法实现多表的更新oracle 多表更新update table_name set (col1, co2)=(select n_col1,n_col2 from table_name2....)...
  • Mysql也可以联合多表更新和删除 (节选自mysql手册) 多表更新 在 MySQL 3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更改。  如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持),...
  • 案例:有一个业务需要同时更新两个或以上的表 分析: 同时更新两个表,简单一点的就是用其中一个表做DW更新,同时用SQL...更新属性就好像是为了这种多表更新而设计的。 PB更新数据库的时候首先看更新的table,然
  • #test、test2为同样的2张表,把A数据更新到B update A t1 set t1.project = (select project from B t2 where t1.product=t2.product)  update A t1,B t2 set t1.project = t2.project where t1.product=t2....
  • 1、多表更新之一步到位  创建表的同时将查询结果写入到数据表中  CREATE TABLE [IF NOT EXISTS] tbl_name  [(create_definition,...)]  select_statement
  • 多表更新关联数据

    2010-05-06 10:56:00
    多表更新数据:例:update A set A.username=B.username, A.tel=B.tel , A.email=B.email , A.role=B.sexfrom GaiaSaver_BUG A,GaiaSaver_Apply B where A.userid=B.userid
  • mysql则是例外,其单表更新是自左到右依次完成,即先完成a=b,然后在完成b=a(此时a=b),所以执行结果变成ab列都是b,然后多表更新则又不尊从该更新法则。本文讨论如何用sql实现类似编程语言引入tmp变量从而实现变量...
  • 多表更新 UPDATE table_references //参照关系 SET col_name1={expr1|DEFAULT}//表达式或默认值 [,col_name2={expr2|DEFAULT}]... [WHERE where_condition]//where条件 连接两张表的参照关系table_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,479
精华内容 7,391
关键字:

多表更新