2013-07-15 94 views
0

我使用下面的SQL查詢..SQL接合基於案例的結果

SELECT *, 
CASE 
WHEN messages.from_user_id = '$user_id' THEN messages.to_user_id 
WHEN messages.from_user_id != '$user_id' THEN messages.from_user_id 
END as from_user_id 
FROM messages JOIN users ON from_user_id=users.id 

但後來我如何利用from_user_id在JOIN語句中使用。它似乎沒有工作。

回答

4

您在CASE表達式中命名的別名在JOIN中不可用。如果要在JOIN中使用別名,則可以將CASE包裝在子查詢中:

select * 
from 
(
    SELECT *, 
     CASE 
     WHEN messages.from_user_id = '$user_id' THEN messages.to_user_id 
     WHEN messages.from_user_id != '$user_id' THEN messages.from_user_id 
     END as from_user_id 
    FROM messages 
) m 
JOIN users 
    ON m.from_user_id=users.id