我在MySQL中遇到问题。我有以下查询:
SELECT
tm.ticket_message_id,
tm.ticket_id,
tm.message_from,
tm.message_to,
t.member_id,
t.member_to
FROM
`ticket_messages` AS tm
INNER JOIN `tickets` AS t
ON ( t.ticket_id = tm.ticket_id )
表ticket_messages
的主键是ticket_message_id
。对于tickets
,主键为ticket_id
。
现在,由于程序逻辑中的错误,ticket_messages.message_from
中的值始终为0.这是错误的。
现在我必须解决这种情况并将tm.message_to
设置为tm.message_to
或t.member_id
,具体取决于以下条件:
假设ID_1
和ID_2
是两个ID。如果tm.message_from
和t.member_to
都等于ID_1
,且t.member_id
等于ID_2
,则需要指定tm.message_from
的值t.member_id
中的值。
如果tm.message_from
和t.member_id
等于ID_2
且t.member_to
等于ID_1
,那么tm.message_from
的值需要被赋予t.member_to
中的值。
如何使用MySQL查询修复表格?
答案 0 :(得分:3)
使用精彩的“CASE”声明。
UPDATE `ticket_messages` AS tm, `tickets` AS t
SET tm.message_from = CASE
WHEN tm.message_from == t.member_id THEN t.member_id
ELSE t.member_to
END
WHERE ( t.ticket_id = tm.ticket_id )