我有一個複雜的問題,創建一個單一的SQL語句工作。 我有三個表,活動,無效和歷史。它們是相同的,除了只有活動中的字段點標記爲主鍵。MySQL插入重複更新
Struct:
-pointid int
-income_time timestamp
-outcome_time timestamp
-receipted_time timestamp
-type int
-isack int
林插入查詢轉換成活性使用「INSERT INTO活性(點名,income_time,outcome_time,receipted_time,類型,isack)VALUES(100,CURRENT_TIMESTAMP,NULL,NULL,15,0)ON DUPLICATE密鑰更新.. ...
和需要幫助構造查詢的結束,它將作爲如下功能:
- 如果一行點名不存在,做簡單的插入
- 如果它確實存在,檢查是否類型是一樣的,如果是,什麼都不做
-if類型是不同的,和ack = 0,將行復制到非活動狀態(並將outcome_time設置爲CURRENT_TIMESTAMP),然後更新當前行(類型,收入時間,isack)中的當前行。
-if類型如果不同且ack = 1,則將行復制到歷史記錄(並將outcome_time設置爲CURRENT_TIMESTAMP),然後更新當前行(類型,收入時間,isack)。
從邏輯上講,我認爲這可能使用IF語句,但尚未找到一個工作解決方案。有任何想法嗎?
爲什麼只限於單個查詢?一個簡單的select然後是適當的INSERT,UPDATE或noaction將是明確的可讀和主調。 – 2010-11-12 08:40:31