MySQL数据库同时查询更新同一张表的方法

 更新时间:2017年09月19日 15:52:08   投稿:mdxy-dxy  
这篇文章主要介绍了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同一张表。不能在同一张表操作,换个思路,如果不是同一张表的话应该就是可以的。于是,可以把select出来的结果当成一个临时的中间表,从中间表中获取想要的更新相关的数据。于是,上面的更新语句可以更改成下面这样子:

UPDATE tb_testSET NAME = (select name from ( SELECT NAME FROM tb_test WHERE id = 2) as t)WHERE `status` = 1

这样就可以完成题目中的操作。经历的大致过程为:查询出id=2的数据作为中间表t;set的数据从t表中查询出来;做更新操作这样就不是在同一语句中update,select同一张表了,因为这相当与在操作两张表,tb_test和中间表t。最后的结果如下图:

这里写图片描述

相关文章

  • MySQL 如何将查询结果导出到文件(select … into Statement)

    MySQL 如何将查询结果导出到文件(select … into Statement)

    我们经常会遇到需要将SQL查询结果导出到文件,以便后续的传输或数据分析的场景,本文就MySQL中select…into的用法进行演示,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • MySQL中慢SQL优化的不同方式介绍

    MySQL中慢SQL优化的不同方式介绍

    慢 SQL 的优化,主要从两个方面考虑,SQL 语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢 SQL吧
    2025-03-03
  • MySql match against工具详细用法

    MySql match against工具详细用法

    在MySQL中,MATCH……AGAINST是全文索引(Full-Text index)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜索和布尔搜索模式,下面给大家介绍MySql match against工具详细用法,感兴趣的朋友一起看看吧
    2025-04-04
  • MySQL中修改库名的操作教程

    MySQL中修改库名的操作教程

    这篇文章主要介绍了MySQL中修改库名的操作教程,是MySQL学习当中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Linux下MySQL5.7.18 yum方式从卸载到安装过程图解

    Linux下MySQL5.7.18 yum方式从卸载到安装过程图解

    这篇文章主要介绍了Linux下MySQL5.7.18 yum方式从卸载到安装过程图解,需要的朋友可以参考下
    2017-06-06
  • MySQL创建唯一索引时报错Duplicate entry * for key问题

    MySQL创建唯一索引时报错Duplicate entry * for key问题

    这篇文章主要介绍了MySQL创建唯一索引时报错Duplicate entry * for key问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • MySQL 5.7中NULL与‘ ‘空字符值的多维度分析(详解)

    MySQL 5.7中NULL与‘ ‘空字符值的多维度分析(详解)

    在数据库设计和开发过程中,正确理解和使用NULL值对于确保数据质量和查询效率至关重要,本文将从多个维度对NULL值进行深入分析,并与空字符串''以及其他控制进行对比,旨在为读者提供一个全面而清晰的理解,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • MySQL 给用户添加 ALTER VIEW 的权限的步骤

    MySQL 给用户添加 ALTER VIEW 的权限的步骤

    在 MySQL 中,用户权限的管理是非常重要的,以确保数据库安全性和数据完整性,这篇文章主要介绍了MySQL 给用户添加 ALTER VIEW 的权限,需要的朋友可以参考下
    2024-05-05
  • mysql中EXISTS和IN的使用方法比较

    mysql中EXISTS和IN的使用方法比较

    这篇文章主要给大家介绍了关于mysql中EXISTS和IN使用方法比较的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySQL对limit查询语句的优化方法

    MySQL对limit查询语句的优化方法

    这篇文章主要介绍了MySQL对limit查询语句的优化方法,分别讲解了offset参数比较小和offset参数比较大的时候,如何优化查询语句,需要的朋友可以参考下
    2014-07-07

最新评论