0

Mysqlデータベースにいくつかの履歴データテーブルがあります。

同じテーブルで、ある日の履歴データを別の日に繰り返したいと思います。

いくつかのサンプルデータを含むテーブル構造:

 Id | Date       | Value

  1 | 2012-04-30 |     5
  2 | 2012-04-30 |    10
  3 | 2012-04-30 |    15

これらのIDと値を繰り返したいのですが、新しい日付(2012-05-01など)を使用します。すなわち追加:

  1 | 2012-05-01 |     5
  2 | 2012-05-01 |    10
  3 | 2012-05-01 |    15

これを行う簡単な方法があるはずだと思います...サブクエリを使用してUPDATEステートメントを試し、複数のLEFT JOINを使用してみましたが、まだ到達していません。

これをどのように行うことができるかについてのアイデアはありますか?

編集:明確にするために...-これらを新しいテーブルに追加したくない-テーブル内の既存のレコードを変更したくない。-IDは意図的に複製されています(データが参照するものを記録する別のテーブルへの外部キーです...)。

4

2 に答える 2

1
INSERT INTO yourTable
SELECT ID, "2012-05-01" As Date, Value
FROM yourTable
WHERE Date = "2012-04-31"

ただし、通常、ID は自動インクリメントであるため、同じテーブルに同じ ID を使用しても機能しません。別の ID または別のテーブルを使用してください。

別の ID (次の自動インクリメント):

INSERT INTO yourTable
SELECT NULL as ID, "2012-05-01" As Date, Value
FROM yourTable
WHERE Date = "2012-04-31"

別のテーブル (元の ID を参照)

INSERT INTO yourTable_hist
SELECT NULL as ID, ID as old_ID, "2012-05-01" As Date, Value
FROM yourTable
WHERE Date = "2012-04-31"
于 2012-05-02T09:26:11.253 に答える
0

多分このようなもの:

UPDATE Table1
SET Date=DATE_ADD(Date, INTERVAL 1 DAY)

または、それらを新しいテーブルに挿入する場合:

INSERT INTO Table1
SELECT
  ID,
  DATE_ADD(Date, INTERVAL 1 DAY),
  Value
FROM
  Table2
于 2012-05-02T09:26:32.170 に答える