特定の列の異なる値ごとにmysqlの行番号をリセットする方法を見つけようとしています。おそらく、例で最もよく説明されています:
クライアントを訪問するユーザーのセットがあり、各クライアントは複数回訪問される可能性があり、テーブルには訪問が行われた日付が記録されます (ただし、これが最初、2 回目、3 回目などの訪問であるかどうかは記録されません)。したがって、私のテーブルは次のようになります。
clientid visitdate
100 10-apr-2012
101 15-apr-2012
101 25-apr-2012
102 26-apr-2012
100 28-apr-2012
私が探しているのは、特定の期間に (たとえば) 2 回目の訪問が何回行われたかです。上記のデータでは、最初の訪問が 3 回、2 回目の訪問が 2 回あります。
次のように、@rownum 機能のようなものを使用する必要があると想定しています。
SELECT visitdate, clientid @rownum := @rownum + 1 as row from visit, (SELECT @rownum := 0) a ORDER BY clientid,visitdate
それは私に与える:
clientid visitdate row
100 10-apr-2012 1
100 28-apr-2012 2
101 15-apr-2012 3
101 25-apr-2012 4
102 26-apr-2012 5
しかし、私が本当に探しているのは:
clientid visitdate row
100 10-apr-2012 1
100 28-apr-2012 2
101 15-apr-2012 1
101 25-apr-2012 2
102 26-apr-2012 1
私が理解できないのは、各クライアント ID の行カウンターをリセットする方法です。
おそらく私はこれに間違った方法でアプローチしており、アプリケーション (PHP) コードでこれらの計算を行うことができますが、データベース内で達成できるはずの何かのように感じます。
SQLServer のアプローチを見てきました (例: http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-programming/74891/Auto-number-and-reset-based-on-data-value- in-a ) ですが、これは mysql では機能しないようですか?
ヘルプ/提案は大歓迎です、乾杯、アレックス