-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

「order」列を追加するにはどうすればよいですか。これは基本的にユーザーごとのシーケンス数であり、日時順に並べられています。

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

もう 1 つの方法は、順序を動的に計算する「ビュー」を作成することです。次に、そのビューからすべての選択を行います。

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

于 2013-03-18T14:50:52.067 に答える