在update语句中使用子查询

在update 中的 where 子句中使用子查询:

UPDATE mg_page_log as a  SET  page_num=1 WHERE id in( SELECT id  from mg_page_log WHERE id < 100 GROUP BY visit_id)

会报:

You can‘t specify target table ‘a‘ for update in FROM clause 错误

所以正确的是:

UPDATE mg_page_log as a ,( SELECT id  from mg_page_log WHERE id < 100 GROUP BY visit_id)as b SET  page_num=1 WHERE a.id = b.id

时间: 2024-10-09 10:56:06

在update语句中使用子查询的相关文章

在 SQL Server 数据库的 WHERE 语句中使用子查询

这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Server Management Studio和AdventureWorks2012数据库的.读者可以阅读我的SQL Server使用入门学习使用这些免费的工具. 在WHERE语句中使用子查询 在WHERE语句中使用子查询是非常常见的.常见的用法是用EXISTS或IN测试存在性.在某些情况下重新考虑查询语

【MYSQL】update/delete/select语句中的子查询

update或delete语句里含有子查询时,子查询里的表不能在update或是delete语句中,如含有运行时会报错:但select语句里含有子查询时,子查询里的表可以在select语句中. 如:把总成绩小于100的学生名称修改为天才 select stu_id from score group by stu_id having sum(grade)<100; #查询总成绩小于100的学生IDupdate students set name='天才' where id in (select s

详细讲述MySQL中的子查询操作 (来自脚本之家)

继续做以下的前期准备工作: 新建一个测试数据库TestDB: ? 1 create database TestDB; 创建测试表table1和table2: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE table1 (   customer_id VARCHAR(10) NOT NULL,   city VARCHAR(10) NOT NULL,   PRIMARY KEY(customer_id) )ENGINE=INNODB DEFAULT CH

子查询一(WHERE中的子查询)

子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,为了让读者更加清楚子查询的概念. 子查询返回结果子查询可以返回的数据类型一共分为四种: 单行单列:返回的是一个具体列的内容,可以理解为一个单值数据: 单行多列:返回一行数据中多个列的内容: 多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围: 多行多列:查询返回的结果是一张临时表: 在WHERE子句中使用子查询 在WHERE子句之中处理单行单列子查询.多行单列子查询.单行

子查询三(在FROM子句中使用子查询)

FROM子句中使用子查询一般都是返回多行多列,可以将其当作一张数据表 示例一.查询出每个部门的编号,名称,位置,部门人数,平均工资 SELECT d.deptno,d.dname,d.loc,temp.con,temp.avgsal FROM dept d,(SELECT deptno dno,COUNT(empno) con,ROUND (AVG(sal),2) avgsal FROM emp GROUP BY deptno) temp WHERE d.deptno=temp.dno; 示例二

MySQL中IN子查询会导致无法使用索引

原文:MySQL中IN子查询会导致无法使用索引 今天看到一个博客园的一篇关于MySQL的IN子查询优化的案例,一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试.)随后动手按照他说的做了一个表来测试验证,发现MySQL的IN子查询做的不好,确实会导致无法使用索引的情况(IN子查询无法使用所以,场景是MySQL,截止的版本是5.7.18) MySQL的测试环境 测试表如下 create table test_table2 ( id int a

where语句中多条件查询字段NULL与NOT NULL不确定性查询

SELECT * FROM Table where a.TenantKey=@TenantId AND (@ProjectKeys is null or b.RecuritProjectKey in (select * from dbo.f_SplitToInt(@ProjectKeys,','))) AND (@ProjectDutyUserKeys is null or b.ProjectDutyUserKey in (select * from dbo.f_SplitToInt(@Proj

UPDATE语句中SET部分列赋值的先后顺序有影响么?

昨天研发同事问我个问题,UPDATE语句中SET部分列赋值的先后顺序会影响结果么?以前没考虑过这个问题,因为通常我们都会UPDATE时给列赋予一个确定的值,而不是一个依赖于其他列的值. 测试环境: DROP TABLE TB1001; CREATE TABLE TB1001 ( ID INT PRIMARY KEY, C1 INT, C2 INT ); INSERT INTO TB1001 ( ID, C1, C2 ) SELECT 1,1,1 UNION SELECT 2,1,1; 更新语句为

update语句中存在&#39;&#39;语法书写方式

例如: 更新LSXTMC中F_XTBH字段为BD'中国,特殊的地方在于更新的值中存在单引号,如果仍然按如下语句更新就会报错: UPDATE LSXTMC SET F_XTBH='BD'中国'' 正确的语法如下:(使用双引号) UPDATE LSXTMC SET F_XTBH='BD''中国''' update语句中存在''语法书写方式