-1

假设我在 mysql 中有这样的表:

userid, paymentid, datetime
blah, 123, 1/2/2011
blah, 144, 1/8/2011
foo, 151, 2/4/2011
bar, 178, 2,8,2011

如何添加一个“订单”列,它基本上是每个用户的序列计数,按日期时间排序?

userid, paymentid, datetime, order
blah, 123, 1/2/2011, 1
blah, 144, 1/8/2011, 2
foo, 151, 2/4/2011, 1
bar, 178, 2,8,2011, 1
4

2 回答 2

1
SELECT userid, paymentid, datetime,
        grpTotal AS `ORDER`
FROM
(
  select  userid,
          paymentid,
          datetime,
          @sum := if(@grp = userid,@sum,0) + 1 as grpTotal,
          @grp := userid
  from    TableName,
          (select @grp := '', @sum := 0) vars
  order   by  userid, datetime
) x
于 2013-03-18T14:46:23.630 回答
0

所以如果你只想改变结构,你可以使用这个:

ALTER TABLE table_name ADD order integer

然后,如果您想保持更新,您可以创建一个“触发器”:

http://www.sqlteam.com/article/an-introduction-to-triggers-part-i

另一种方法是创建一个“视图”,您可以在其中动态计算订单。然后,您将从该视图中进行所有选择。

http://www.tutorialspoint.com/sql/sql-using-views.htm

于 2013-03-18T14:50:52.067 回答