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

一点背景——表记录有两列——date_loaned 和 date_returned,date_returned 默认设置为 null。我想知道是否有可能在 temp_card 更新时将 last_seen 列更改为 date_returned

很确定这是不可能的,但我想我是在碰运气!

-edit- *我有点希望它是自动的(例如,当记录更新时,这会触发 last_seen 的变化)希望可以解决问题!*

-edit-感谢所有回答的人!这是我得出的解决方案:

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
4

2 回答 2

0

CASE使用like怎么样

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
于 2013-07-10T09:02:59.123 回答
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
                          )
于 2013-07-10T09:13:51.827 回答