【问题标题】:Mysql Insert Order Number By VARCHAR FieldMysql通过VARCHAR字段插入订单号
【发布时间】:2012-01-31 22:02:37
【问题描述】:

我有一个关于按特定订单类型插入行订单号的问题。

Products 表有 OrderNumber 字段。我想通过其名称以编程方式将新行添加到适当的 OrderNumber。如果参考列是整数,它必须像那样简单

update products set OrderNumber=OrderNumber+1 where Price>555

varchar 字段有没有类似的方法

update products set OrderNumber=OrderNumber+1 where Name>'bla%'

谢谢

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    你可以使用 STRCMP('text', 'text2')

    update products 
    set OrderNumber=OrderNumber+1 
    where STRCMP(Name, 'bla') = 1;
    

    我误解了你的意思。可以试试这样的吗?

    SET @rownum:=0;
    update 
    set OrderNumber=@rownum:=@rownum + 1
    from products
    order by Name;
    

    【讨论】:

      【解决方案2】:

      您可以简单地运行带有序列号的更新查询,例如here

      【讨论】:

        【解决方案3】:

        听起来是个糟糕的设计。为什么不简单地拥有一个简单的 jane auto_increment 字段并按此排序?根据定义,每条新记录的 ID 都比它的任何前辈都高。

        【讨论】:

          【解决方案4】:

          你的意思是update products set OrderNumber=OrderNumber+1 where Name like 'bla%'

          【讨论】:

          • 是的。但是如果添加的产品名称是 book 那么它不能正常更新产品 set OrderNumber=OrderNumber+1 where Name like 'b%'。因为球必须在书之前
          • 如果我理解得很好,您需要更新表格并将 OrderNumber+1 设置为 'bla..' 之前的所有行??
          • 是的。我实际上不想通过循环来刷新所有行。但它必须,我明白了
          • 我认为您需要使用与您需要的字母含义比较的 id 来索引所有行。然后只需选择所有小于您需要的字母的行。我必须承认这是一个棘手的问题:)
          • 不,我不处理这个好主意:) 计算问题只是星期一的综合症
          猜你喜欢
          • 2015-11-28
          • 2013-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-18
          • 2011-11-30
          • 2011-09-13
          • 2015-07-30
          相关资源
          最近更新 更多