2009-06-04 86 views
0

我有一個在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_messagesticket_message_id。對於tickets,主鍵是ticket_id

現在,由於程序邏輯錯誤,ticket_messages.message_from中的值始終爲0.這是錯誤的。

現在我必須解決這個情況,並設置tm.message_totm.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_2,和t.member_to等於ID_1,則需要在t.member_to要分配的值tm.message_from的值。

我怎樣才能解決我的表與MySQL查詢?

+0

其他editers注意:我打算嘗試清理這一個。 – Welbog 2009-06-04 16:33:53

+0

好的,我完成了編輯。我希望我沒有失去任何信息。我沒有100%清楚kofto4ka列出的條件,所以我留下他們或多或少我找到他們。 – Welbog 2009-06-04 16:45:08

+0

謝謝!令人驚歎:) – user52005 2009-06-04 16:58:15

回答

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) 
+1

在MySQL中沒有「UPDATE ... FROM」。 – Tomalak 2009-06-04 16:37:34

+0

我認爲正確的語法是下一: UPDATE'ticket_messages' TM INNER JOIN'tickets'爲t ON(t.ticket_id = tm.ticket_id) SET tm.message_from = CASE WHEN = tm.message_from t.member_id THEN t.member_id ELSE t.member_to END 但它不影響任何行。 – user52005 2009-06-04 17:03:44

+0

好點。我已經更新到我認爲是正確的mysql語法。我習慣在SqlServer中思考。 – Talljoe 2009-06-04 17:20:39