0

为什么会出现这个错误?:

#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
4

1 回答 1

1

问题在于您的派生表:

( 
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 合并到派生表中。

于 2013-10-24T16:20:54.347 回答