mysql - 如何根据行使用多个值填充表的字段

标签 mysql sql-update populate

我有一个名为 sinvent 的表,其中包含 accno、jno 和 saccno 列。 jno 和 saccno 已经填充了数字,很多数字重复。我需要根据与 jno 关联的以下值来填充 accno。我如何编写一个查询来执行此操作?

accno = 4010 for jno < 09999
accno = 4011 for jno = 00011
accno = 4012 for jno = 00012
accno = 4714 for jno = 00014
accno = 4018 for jno > 80000 and jno < 99998
accno = 4008 for saccno = 7 and 8
accno = 4714 for jno = 04714 and 4714

任何帮助将不胜感激。

我尝试过使用

update sinvent
set 
  accno = '4010' where jno < '09999',
  accno = '4011' where jno = '00011'

但它说在同一子句中不能为一列分配多个值

最佳答案

您必须使用CASE里面UPDATE声明:

UPDATE sinvent
    SET accno = CASE
        WHEN jno < '09999' THEN '4010' 
        WHEN jno = '00011' THEN '4011'
        WHEN jno = '00012' THEN '4012' 
        WHEN jno = '00014' THEN '4014' 
        WHEN (jno > '80000' and jno < '99998') THEN '4018' 
        WHEN (saccno = '7' OR saccno = '8') THEN '4008' 
        WHEN (jno = '4714' OR jno = '04714') THEN '4714' 
    END

关于mysql - 如何根据行使用多个值填充表的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782019/

相关文章:

php - 更新sql语句不起作用

java - Android - 通过单个类填充多个 ListView

strapi - 在 Strapi v4 中自定义填充的最佳方法是什么?

java - 如何从文本文件填充 JComboBox?

php - 使用 SHOW CREATE TABLE 使用 php 和 mysql 创建一个表

php - 将 sql 表内容从一个表复制到另一个表 - 有条件

java - Tomcat 日历 Web 应用程序 mysql : MySQLNonTransientConnectionException:

多个 UNIQUE 字段的 ON DUPLICATE KEY UPDATE 的 MySQL 行为

php - 当值存在时事件记录省略插入

mysql - 如何根据此数据找出 1 周间隔的顶级股票(失败者)