为什么会出现此错误?(将值传递给连接的表)


Why this error ? ( pass value to joined table )

为什么会出现此错误?

#1054 - Unknown column 'm2.s_sender_id' in 'where clause' 

在此查询中:在此查询中:我需要在这个地方传递m2.s_sender_id!

    select w.ct,m5.pc, w.s_thread_id,w.unread , w.draft , w.s_user_id , m2.s_subject ,m2.s_sender_id starter, LEFT(m3.s_message,20) , m3.s_date_sent from 
(SELECT  max(m.id) mxid , min(m.id) mnid ,min(r.s_unread_count) unread , 
    COUNT(IF(m.s_sender_id = 534 and m.s_status = 0,1,NULL))  draft,
    COUNT(IF(m.s_sender_id = 534 or m.s_sender_id = 2,1,NULL)) pc,
    count(r.s_thread_id) ct ,
    r.s_user_id , r.s_thread_id 
     FROM  t_messages_messages m
     LEFT JOIN t_messages_recipients r on (m.s_thread_id = r.s_thread_id )
where  r.s_is_deleted = 0  AND r.s_user_id = 534 AND r.s_sender_only = 0  AND (r.s_is_arshived is null or r.s_is_arshived = 0)
GROUP BY m.s_thread_id) w
inner join t_messages_messages m2 on (m2.id=w.mnid)
inner join t_messages_messages m3 on (m3.id=w.mxid)
inner join ( 
    SELECT COUNT( m4.id ) pc FROM  t_messages_messages m4
    where ( m4.s_sender_id = 534 or m4.s_sender_id =  m2.s_sender_id )
 ) m5 on (m5.s_thread_id = w.s_thread_id)enter code here

问题出在派生表上:

( 
SELECT COUNT( m4.id ) pc FROM  t_messages_messages m4
where ( m4.s_sender_id = 534 or m4.s_sender_id =  m2.s_sender_id )
) m5 on (m5.s_thread_id = w.s_thread_id) enter 

它必须能够自己运行,但不能,因为 m2 在此子查询中不存在。 如果要引用 m2,则必须在派生表之外执行此操作,或者将 m2 合并到派生表中。