2013-07-10 27 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

相关问题