2012-09-28 58 views
0

我想知道MYSQL數據庫中以前的更新值。MYSQL查詢即使更新後也能得到舊記錄

si.no cus_name  date  status 
    1  JOHN  2012-05-02 active 

1  PAUL  2012-05-02 active (not a new record just an 1st-update) 

    1  JOSE  2012-05-02 active (not a new record just an 2nd-update) 

現在我想,當我與"PAUL"同樣與"JOSE"更新名稱應給予價值"PAUL"得到cus_name值"JOHN"

請向我推薦相同的查詢。

非常感謝您的時間。

+1

你怎麼知道該記錄是第一次更新或第二,還是等? –

+0

第一次記錄將從註冊頁面插入,在這裏我不會搜索舊記錄...我想通過在另一個模塊中處理的分隔符查詢來獲取舊記錄。感謝您的關注John。 :) – Harry

+0

@Harry你應該使用觸發使用這些選項將方便解決您的概率 – gks

回答

1

如果您想訪問以前的值,您有兩個選項。

  1. 設計,版本號和時間戳列,這樣你可以隨時獲取最新版本,以及該行的任何先前版本的表。您必須將更新操作更改爲插入,可能在您的應用程序代碼或觸發器中。如果表得到頻繁的更新,這可能會導致表增長得相當大。
  2. 使用第二個表來存儲以前版本的更新行。該表需要一個版本號(可能更新時間戳)。這種方法的優點是,具有「當前」數據的主表在更新積累時不會遇到無限增長。這也可以通過觸發器或應用程序來完成。

您選擇哪一個取決於更新的頻率以及訪問「舊」記錄的頻率。

+0

聽起來很棒,但你指出的東西似乎有單獨的桌子,不是嗎?只是想在不創造新的情況下進行整理。感謝您的時間和耐心的人。 – Harry

1

你應該需要在db中添加一個colum並使用time()插入當前時間;功能。所以你可以很容易地識別哪一個更老。另一種解決方案是從dateDATETIME更改日期在數據庫中的結構,因此您可以輕鬆地檢查..

CREATE TABLE IF NOT EXISTS `customer_record` (
`si.no` int(11) NOT NULL, 
`cus_name` varchar(255) NOT NULL, 
`date` DATETIME NOT NULL, 
`status` varchar(255) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

是啊,即使我想保持獨立的列來存儲先前的價值....但認爲它甚至會更好,如果我們能做到這一點我有什麼。因爲已經是表一直是你的時間MIT :) – Harry

0

簡單的辦法,一個AUTO_INCREMENT字段添加到表中。爲了獲得由AUTO_INCREMENT字段的最後一個值只需選擇,順序降序排列限制1.

+0

我覺得你完全誤解了我的問題overloaded.Thanks。任何方式感謝您的評論和時間。 – Harry

相關問題