Mysql SQL在与另一个表联接后引用一个表

Mysql SQL在与另一个表联接后引用一个表,mysql,join,Mysql,Join,我得到这个MySQL查询是为了输出ID为18的用户与其他用户的最新聊天信息。该查询一直工作到我加入lastJOIN,用于计算未查看的MSG的数量(unviewed\u total)。我得到的错误是T2.rid1和T2.rid2的“未找到列”。无法确定如何以正确的方式引用这些列 SELECT T2.maxDate, T2.ava, T2.uname,chat.user_to,chat.user_from,chat.body,chat.request_id,chat.secondary_rid, T

我得到这个MySQL查询是为了输出ID为18的用户与其他用户的最新聊天信息。该查询一直工作到我加入last
JOIN
,用于计算未查看的MSG的数量(
unviewed\u total
)。我得到的错误是
T2.rid1
T2.rid2
的“未找到列”。无法确定如何以正确的方式引用这些列

SELECT T2.maxDate, T2.ava, T2.uname,chat.user_to,chat.user_from,chat.body,chat.request_id,chat.secondary_rid, T3.unviewed_total FROM 
                (SELECT T1.user2_id, users.uname, users.ava, max(cdate) maxDate, T1.rid rid1, T1.sec_rid rid2 FROM
                (SELECT chat.user_to user2_id, max(msg_time) cdate,request_id rid,secondary_rid sec_rid
                    FROM chat WHERE chat.user_from=18
                    GROUP BY chat.user_to
                union distinct
                (SELECT chat.user_from user2_id, max(msg_time) cdate,request_id rid,secondary_rid sec_rid
                    FROM chat WHERE chat.user_to=18
                    GROUP BY chat.user_from)) T1
                inner join users on (users.uid = T1.user2_id)
                group by T1.user2_id
                order by maxDate desc) T2
            join chat on (T2.maxDate = chat.msg_time)  
            join (SELECT COUNT(viewed) unviewed_total FROM chat WHERE viewed='0' AND user_to=18 AND request_id IN (T2.rid1,T2.rid2)) T3
            ORDER BY T2.maxDate DESC

该联接的内部查询不知道表T2。 我建议将连接移动到select语句

改变

SELECT T2.maxDate, T2.ava, T2.uname,chat.user_to,chat.user_from,chat.body,chat.request_id,chat.secondary_rid, T3.unviewed_total FROM 


有关此技术的更多信息,请参见:

谢谢,它工作得很好。还有一个单独的大(!)谢谢你的链接,它很好地解释了这一点
SELECT T2.maxDate, T2.ava, T2.uname,chat.user_to,chat.user_from,chat.body,chat.request_id,chat.secondary_rid, (SELECT COUNT(viewed) unviewed_total FROM chat WHERE viewed='0' AND user_to=18 AND request_id IN (T2.rid1,T2.rid2)) unviewed_total