我该如何撰写此查询?

时间:2009-06-04 16:24:54

标签: mysql

我在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_tot.member_id,具体取决于以下条件:

假设ID_1ID_2是两个ID。如果tm.message_fromt.member_to都等于ID_1,且t.member_id等于ID_2,则需要指定tm.message_from的值t.member_id中的值。

如果tm.message_fromt.member_id等于ID_2t.member_to等于ID_1,那么tm.message_from的值需要被赋予t.member_to中的值。

如何使用MySQL查询修复表格?

1 个答案:

答案 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 )