请教,mysql update where not exists同一张表该怎么写?
update user_address as t
set t.IS_DEFAULT = 1
where t.USER_ID = 'ifelse'
and not exists (
select 1 from user_address i
where i.USER_ID = t.USER_ID and ifnull(i.IS_DEFAULT, 0) = 1
) and t.ADDRESS_ID in (
select min(i.ADDRESS_ID)
from user_address i
where i.USER_ID = t.USER_ID
)
如题,我想要更新地址表用户“ifelse”的“默认地址”列,当发现该用户的地址列表中没有任何一条地址被设置成默认地址,则设置编号最小的地址为默认地址。
这个SQL在ORACLE或SQLSERVER中执行是没有问题的,在MYSQL中执行报错:
Error:2013-12-08 20:39:51 0:00:00.000: Lookup Error - MySQL Database Error: You can't specify target table 't' for update in FROM clause
这是应该怎么写呢,求帮助!
相关推荐
MySQL数据库同时查询更新同一张表的方法
在平常的项目中,经常会碰到这样的问题:我需要在一张标中同时更新和查询出来的数据。例如:有如下图一张表数据,现在需要更新操作为:把status=1的name值更新为id=2的name值 通常情况下我们会想到如下语句来实现这个需求: UPDATE tb_testSET NAME = ( SELECT NAME FROM tb_test WHERE id= 2)WHERE `status` = 1 结果却报错,报错信息为:You can't specify target table 'tb_test' for update in FROM clause,不能在同一语句中update,select同
Mysql联表update数据的示例详解
1.MySQL UPDATE JOIN语法 在MySQL中,可以在 UPDATE语句 中使用JOIN子句执行跨表更新。MySQL UPDATE JOIN的语法如下: UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition 更详细地看看MySQL UPDATE JOIN语法: 首先,在UPDATE子句之后,指定主表(T1)和希望主表连接表(T2)。 第二,指定一种要使用的连接,即INNER JOIN或LEFT JOIN和连接条件。J
mysql insert if not exists防止插入重复记录的方法
在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问题的解决方案。
MySQL的子查询中FROM和EXISTS子句的使用教程
FROM 子查询 FROM 子句中的子查询 MySQL FROM 子查询是指 FROM 的子句作为子查询语句,主查询再到子查询结果中获取需要的数据。FROM 子查询语法如下: SELECT ... FROM (subquery) AS name ... 子查询会生成一个临时表,由于 FROM 子句中的每个表必须有一个名称,因此 AS name 是必须的。FROM 子查询也称为衍生数据表子查询。 FROM 子查询实例 table1: s1 s2 1 5 2 12 3 20 FROM 子查询 SQL 如下: SELECT s1,s2 FROM (SELECT s1, s2*2 A
mysql多表join时候update更新数据的方法
如果item表的name字段为''就用resource_library 表的resource_name字段前面加上字符串Review更新它,他们的关联关系在表resource_review_link中。



