`

Mysql更新:某字段有值不更新,反之更新

 
阅读更多

 

表结构如下:
CREATE TABLE `test` (
  `id` int(10) NOT NULL auto_increment,
  `name` varchar(222) default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

插入之前:
    id  name 
------  ------
     1  a    
     2  b    
     3  c    
     4       
     5  


想要实现 name字段如果有值不更新,如果不存在则更新为新值d。

UPDATE test t1 INNER JOIN 
(SELECT 
CASE WHEN NAME IS NULL OR NAME = '' THEN 'd'
ELSE NAME END AS newname     
FROM test WHERE id =4
)
AS t

ON t1.id = t1.id 

SET NAME = t.newname

WHERE id = 4

在mysql中要使用update set = (select ) 之类的语句必须要使用inner join 等值连接来实现

执行sql语句之后

    id  name 
------  ------
     1  a    
     2  b    
     3  c    
     4  d    
     5  

再次执行上面的语句,id=4的name值依然是d,不会更新。
分享到:
评论

相关推荐

    MySQL分区字段列有必要再单独建索引吗?

    3. **唯一性约束**:如果你需要确保分区字段的值在整个表中是唯一的,那么为该字段创建单独的唯一索引是有意义的。尽管分区字段通常是主键的一部分,但主键并不保证分区内的唯一性,只保证分区间的唯一性。 4. **...

    往数据库插入数据,相同的不插入

    根据题目给出的描述:“当获取过来的是值往数据库插入的时候有相同的就不插入,将不同的插入到数据库中”。可以看出主要需求是:对于一个特定的值列表,如果这个值已经在数据库中存在,则跳过该值的插入;反之,如果...

    mysql索引笔记1

    反之,以下情况通常不需要创建索引: 1. 记录数量很少的表。 2. 经常进行大量增删改操作的表。 3. 数据重复且分布均匀的字段。 4. 频繁更新的字段。 5. WHERE子句未使用的字段。 MySQL的Explain功能是分析查询性能...

    MySQL面试,你不能不知道的25道面试题!

    10. **TIMESTAMP字段**:TIMESTAMP字段会在每次行更新时自动更新为当前时间戳。 11. **获取自增ID**:使用`LAST_INSERT_ID()`函数可以获取最近一次自增操作产生的ID。 12. **查看索引**:使用`SHOW INDEX FROM ...

    最全mysql面试题-mysql-面试题

    - **MyISAM**:不支持事务,但速度较快,存储空间小,适合读取密集型应用。 - **InnoDB**:支持事务处理,行级锁定,适用于需要高并发写入的场景,是MySQL的默认存储引擎。 - **Gemeni**:一种新的存储引擎,具体...

    oracle和MySQL区别手册

    ### Oracle与MySQL的主要区别 ...这些差异对于从Oracle迁移到MySQL或反之亦然的项目至关重要,有助于确保数据的正确性和应用程序的兼容性。理解这些差异不仅有助于避免潜在的问题,还能提高数据迁移过程中的效率。

    MYSQL安装包官方试用版

    当创建表时,在某些条件下,MySQL可以将一个列从变长类型改为固定长度的类型或反之亦然。详细信息参见13.1.5.1节,“沉寂的列规格变更”。 数值类型存储需求 列类型 存储需求 TINYINT 1个字节 SMALLINT 2个...

    MySQL索引

    反之,对于记录较少的表、需要频繁更新的字段、在查询中不常用的字段,以及含有大量重复值的字段,创建索引可能并无太大益处。 MySQL支持不同类型的索引结构,如BTree和Hash。BTree索引是MyISAM和InnoDB存储引擎的...

    Mysql – 如果数据库表中的记录存在相同记录则不插入记录,反之插入。

    如果尝试插入的记录中`ID`字段与已有记录相同,MySQL会识别出这是一个重复的值,并且在`IGNORE`关键字的作用下,不执行插入操作,从而避免了错误的发生。 创建表的结构可能是这样的: ```sql CREATE TABLE `my_...

    MySQL建表的规范总结[归类].pdf

    7. **LIKE操作符与索引**:对于`LIKE 'ab%'`形式的查询,MySQL可以使用索引,但反之则不能。 8. **COUNT(*) vs COUNT(column)**:无条件的`COUNT(*)`比`COUNT(column)`慢,但在带条件的查询中,`COUNT(column)`更快...

    MySQL的面试题集锦

    Heap 表有一些限制,例如 BLOB 或 TEXT 字段是不允许的,比较运算符只有 =,<,>,=>,=,且不能使用 AUTO_INCREMENT 索引不可为 NULL。 MySQL 服务器默认端口 MySQL 服务器的默认端口是 3306。 MySQL 优势 相比...

    MySQL Workbench 6.3.7 CE.rar

    - **向前/向后工程(Forward/Reverse Engineering)**: 设计完成后,可以生成SQL脚本来创建或更新数据库,反之亦然。 2. **SQL开发**: - **代码编辑器(Code Editor)**: 提供了一个功能丰富的SQL编辑器,支持...

    Mysql update多表联合更新的方法小结

    MySQL中的多表联合更新是数据库操作中的一种高级技巧,它允许你在一次UPDATE语句中同时修改多个相关联的表的数据。这种技术在处理一对多、多对一或多对多关系时非常有用,尤其是在数据同步或者关联数据更新时。本文...

    MySQL数据库学习笔记.pdf

    在MySQL中,标识符如数据库名、表名、列名等有一定的命名规则和限制,比如最大长度为64个字符,某些字符不能使用。同时,MySQL的数据库和表在操作系统下对应为目录和文件,所以它们的大小写敏感性取决于操作系统的...

    C#WinFrom程序:MySql登录+注册+图片轮播

    8. **数据绑定**:WinForm中的数据绑定允许控件与数据源(如数据库)直接关联,当数据源改变时,界面会自动更新,反之亦然。 9. **设计模式**:良好的代码组织可能会运用到一些设计模式,如工厂模式用于创建数据库...

    MySQL数据库的常见面试题解析,建议收藏!(附答案)

    10. **MySQL约束**:NOT NULL保证字段非空,UNIQUE确保字段唯一,PRIMARY KEY作为主键约束,FOREIGN KEY用于外键关联,CHECK限制字段值的范围。 11. **UNION与UNION ALL**:UNION合并结果集并去除重复行,UNION ALL...

    jsp,Mysql,servlet,验证码为一体的简单的用户登陆验证

    反之,如果失败,则会显示错误消息。 【验证码技术】: 验证码是一种用于验证用户是否为真实人类的机制,通常通过让用户输入图片上显示的一串随机字符来实现。在用户登录过程中,验证码可以防止自动脚本或机器人...

    jsp,mysql实现登陆

    【标题】"jsp,mysql实现登陆"涉及到的技术主要包括Java服务器页面(JSP)和MySQL数据库,用于构建一个基本的用户登录系统。以下是关于这两个技术及其在登录系统中的应用的详细说明: 1. Java服务器页面(JSP): ...

    mysql自己整理的学习文档

    MySQL是世界上最流行的关系型数据库管理系统之一,被广泛应用于网站开发、数据分析、企业系统等领域。这份学习文档涵盖了MySQL的基础知识和核心概念,对于初学者来说是一个很好的起点。 1. **DOS下的常用操作**:在...

    性能加速器:MySQL中索引的创建与优化

    反之,如果某列中大部分数据相同,则创建索引可能会导致索引效果不佳。 4. **列的基数**:较高的基数意味着列中不同值的数量较多,这样的列适合作为索引,因为它们能够有效地缩小查询范围。 #### 五、索引的维护 ...

Global site tag (gtag.js) - Google Analytics