2013-08-21 22 views
0

在MySQL我有這個疑問如何訪問mysql子查詢中的外部列值?

SELECT m.* 
FROM members m 
RIGHT JOIN (SELECT 
       IF(`from member_id`=1, `to member_id`, `from member_id`) as other_id, text, `date sent` 
      FROM message 
      WHERE ((`from member_id`=1 AND `to member_id`=m.id) OR (`to member_id`=1 OR `from member_id`=m.id)) 
      ORDER BY `date sent` DESC 
      LIMIT 1 
      ) as t on 1=1 
ORDER BY t.`date sent` DESC 

,我得到這個錯誤:

Unknown column 'm.id' in 'where clause' 

如何傳遞在子查詢select語句成員列值?

我正在創建這個子查詢,所以它的計算結果爲1行,然後我想將它附加到外部select語句的右側。

謝謝。

+3

誰的主意是把空格放在列名中? – Bohemian

+0

這是一個查詢應該做什麼的混亂?它可能可以簡化。 –

+0

我想出瞭如何去做,顯然我想要的是'groupwise maximum'。它的一個很好的例子是在這裏http://stackoverflow.com/questions/15211479/groupwise-maximum。 – omega

回答

0

您需要SELECTfrom member_id/​​值在子查詢中。然後,您可以在可以訪問這些值的派生表上加入表m

) as t on t.`from member_id` = 1 AND t.`to member_id` = m.id 
OR t.`to member_id` = 1 OR t.`from member_id` = m.id 
相關問題