2013-07-10 32 views
0

我目前擁有的是:設置一列一列從另一個表複製(條件)

UPDATE card, records 
IF(records.date_returned == null) THEN SET 
card.last_seen = records.date_loaned 
ELSE SET card.last_seen = records.date_returned 
WHERE card.card_no = records.card_no 

小background--表中的記錄有兩個columns-- date_loaned和date_returned,與date_returned集默認情況下爲null。我想知道是否有可能將temp_card中的last_seen列更改爲date_returned,當它得到更新時

很確定它不可能,但我想我正在嘗試我的運氣!

CNC中*我有點希望它是自動的(例如,當記錄得到更新,這將觸發last_seen改變)希望清除的東西了!*

CNC中謝謝大家誰回答!這是我得到的解決方案:

AFTER UPDATE ON records 
FOR EACH ROW 
Update card A 
INNER JOIN records B 
SET A.last_seen = 
(CASE WHEN B.date_returned=null then B.date_loaned Else B.date_returned END) 
WHERE A.card_no = B.card_no 
+0

使用'trigger',上更新事件 –

+0

你可能會詳細闡述一下嗎?我並不十分確定如何使用觸發器 – ohhreeohh

+0

您希望在某列更新後立即更新列,即您希望在主列的更新時觸發一個事件..http:// dev.mysql.com/doc/refman/5.0/en/create-trigger.html –

回答

0

你可以嘗試這樣的..

Update Card A INNER JOIN Record B ON (A.card_no =B.card_no) SET A.last_seen =(
          Case WHEN B.date_returned==null 
          then B.date_loaned 
          Else B.date_returned 
          End 
         ) 
+0

謝謝你的迴應!然而,我得到了一個錯誤,如 「你的SQL語法錯誤;檢查與你的MySQL服務器版本相對應的手冊,在第8行」')附近使用正確的語法。「這只是最糟糕的一種錯誤。既然你實際上不知道什麼是錯的! D: – ohhreeohh

+0

@Gwen現在嘗試我忘記加入結束..我現在更新它 –

+0

啊,它的工作!然而,我有點希望它是自動的(例如,當我更新表'記錄','last_seen'列會自動相應地改變。雖然它工作得很好,如果我沒有得到任何其他答案,我會接受這種權利!一個 – ohhreeohh

0

如何使用CASE

UPDATE card, records 
SET 
card= CASE records.date_returned == null 
THEN card.last_seen = records.date_loaned 
ELSE SET card.last_seen = records.date_returned 
WHERE card.card_no = records.card_no 
+0

加拿大..? DDDDD: – ohhreeohh

+0

@Gwen ...我希望這不是給我-1的錯誤。 – idipous

+0

那不是我:o – ohhreeohh

相關問題