mysql 更新查询出来的数据

执行下面sql报错[Err] 1093 - You can‘t specify target table ‘uu‘ for update in FROM clause:

UPDATE sellmanagement_agency_user uu
SET uu.`status` = 1
WHERE
    uu.id IN (
        SELECT
            u.id
        FROM
            sellmanagement_agency_user u
        LEFT JOIN sellmanagement_agency_type t ON u.type_id = t.id
        WHERE
            t.type = 3
        AND u.`status` = 0
    )

select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。

改成下面sql成功:

UPDATE sellmanagement_agency_user  uu
SET uu.`status` = 1
WHERE
    uu.id IN (
SELECT u.id from (
        SELECT
            u.id
        FROM
            sellmanagement_agency_user u
        LEFT JOIN sellmanagement_agency_type t ON u.type_id = t.id
        WHERE
            t.type = 3
        AND u.`status` = 0
) u
 )

 

时间: 2024-11-05 17:33:59

mysql 更新查询出来的数据的相关文章

MySQL学习——查询表里的数据

MySQL学习——查询表里的数据 摘要:本文主要学习了使用DQL语句查询表里数据的方法. 数据查询 语法 1 select [distinct] 列1 [as '别名1'], ..., 列n [as '别名n'] from 表名 2 [where 表达式] 3 [group by 表达式] 4 [having 表达式] 5 [order by 表达式] 6 [limit 起始编号, 查询条数] 说明 1 列1, ..., 列n:表示查询的字段,查询多个字段用“,”分隔,使用“*”号表示查询全部字

mysql将查询到的数据导出为excel

现在需要将mysql库中的一些数据导出为excel,然后打印.其实实现上面说的需求很简单,只要你把sql语句写出来,然后导出为excel即可 具体实现流程如下: 1.写出sql语句,查询出结果. 2.在查询的结果上点击右键,选择"导出所有表数据记录/结果为..." 如图所示: 选择"导出所有表数据记录/结果为..."之后出现如下图所示 点击导出即可. ======================================================== 需

mysql 根据查询条件删除数据 mark一下

DELETEFROMdd_itemWHEREdd_item.id IN ( SELECT * from( SELECT a.id FROM dd_item a LEFT JOIN dd_item_cat b ON a.class_id = b.id WHERE b.parent_id=23 and (b.name in ('生蚝','带鱼','黄鳝')) ) as ee ) //mysql 根据查询子条件进行删除表的记录 原文地址:https://blog.51cto.com/13288309/

mysql下更新查询出的数据的语句upda set select

在oracle 等数据库中可以使用 update wwm2 set wwm2.town=(select wwm5.town from wwm5 where wwm5.id=wwm2.id) 这种格式的句子更新数据库,但是我最近用mysql 发现不能这样使用,所以在网上查了下,发现mysql用另一种语句解决了,inner join:::: 应该使用inner join,即:UPDATE friends INNER JOIN users ON friends.friendid=users.useri

MySQL时间段查询,无数据补0

上一节提到分时间段统计,可是无数据的时候不显示,而此时我们需要让他显示0. 首先我们需要建一个时间表. CREATE TABLE `my_date` ( `date` date NOT NULL, PRIMARY KEY (`date`) ) 并且插入一些数据,具体怎么插入有好多种方法,目的是生成我们需要的时间格式,如下 以下就要用到我们的时间表,与我们的数据表进行连接查询了.呃,中间的1你们可以忽略啊!!你们需要看的只有 t 和 count mysql> select DATE_FORMAT(

MySql数据库-查询、插入数据时转义函数的使用

最近在看一部php的基础视频教程,在做案例的时,当通过用户名查询用户信息的时候,先使用了转义函数对客户提交的内容进行过滤之后再交给sql语句进行后续的操作.虽然能看到转义函数本身的作用,但是仍然有一些疑惑. 疑惑一:当转义数据后,数据中会增加一些反斜杠,为了能查找出对应的数据,那么原来存在数据库中的数据是不是也已经被保存成含有反斜杠的了? 疑惑二:转义数据后再向数据库中插入数据,保存在数据库中的数据是否会含有过滤后的反斜杠? 带着这些疑问对用户提交的表单进行测试. echo get_magic_

如何实现MySQL随机查询数据与MySQL随机更新数据?

以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL随机查询数据 以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了. SELECT * FROM table_name ORDER BY rand() LIMIT 5; MySQ

mysql更新某个字符串字段的部分内容

如果现在需要Mysql更新字段重部分数据,而不是全部数据,应该采用何种方法呢?下面介绍了两种情况下Mysql更新字段中部分数据的方法,供您参考. Mysql更新字段中部分数据第一种情况: update tab set     A   = concat(substring(A,1,3),'bbb'); 从A的1个字符开始取3个字符,加上'bbb',再写入a中,如果A原始值为'123aaa',那么更新之后为'123bbb'了. Mysql更新字段中部分数据第二种情况: 1.Mysql模糊查询: se

mysql随机查询记录的高效率方法

mysql使用rand随机查询记录的高效率方法 一直以为mysql随机查询几条数据,就用 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了. 但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒以上 查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低. You cannot use a column with RAND() values in an ORDER BY clause