【问题标题】:how to populate a table's fields with multiple values depending on the row如何根据行使用多个值填充表的字段
【发布时间】:2015-08-27 05:18:25
【问题描述】:

我有一个名为 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'

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

【问题讨论】:

    标签: mysql sql-update populate


    【解决方案1】:

    您必须在UPDATE 语句中使用CASE:

    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
    

    【讨论】:

    • 这行得通,但我还需要将所有行的字段 invno 更改为 'INVENTORY'。我该怎么做?
    • @samhatcher 如果这行得通,那么问题得到了回答,最好在单独的帖子中发布单独的需求,这样我们就可以更轻松地处理它们。请打开新问题并清楚地描述您的问题。这可能会帮助您rename Mysql 中的一列。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多