在MySQL中使用SELECT和SUB SELECT
我有一个关于SQL的问题,我从来没有使用过select sub,最后我迷了路 Meu SQL:在MySQL中使用SELECT和SUB SELECT,mysql,sql,Mysql,Sql,我有一个关于SQL的问题,我从来没有使用过select sub,最后我迷了路 Meu SQL: SELECT CLI.id, CLI.nome, CLI.senha, CLI.email, CLI.cpf, CLI.celular, CLI.data_nasc, CLI.genero, CLI.data_cadastro, CLI.status, CLI.id_socket, ATEN.mensagem, ARQ.nome AS foto, ATEN.data_mensagem FROM
SELECT CLI.id, CLI.nome, CLI.senha, CLI.email, CLI.cpf, CLI.celular, CLI.data_nasc, CLI.genero, CLI.data_cadastro, CLI.status, CLI.id_socket, ATEN.mensagem, ARQ.nome AS foto, ATEN.data_mensagem
FROM ut_clientes AS CLI
LEFT JOIN ut_arquivos AS ARQ ON (ARQ.id_tipo = CLI.id AND ARQ.tipo = "ut_clientes")
INNER JOIN ut_atendimentos AS ATEN ON (ATEN.id_usuario_envio = CLI.id)
WHERE ATEN.id_usuario_envio != 59163
GROUP BY CLI.id
ORDER BY ATEN.data_mensagem
DESC
嗯,我想做的是根据客户ID对消息进行分组,并根据数据管理只带来数据库中记录的最后一条消息
我尝试了很多方法,但最后显示的是插入DB中的第一条消息
如果有人能帮助我,我将不胜感激。谢谢你们 这可能会帮助你。。。我正在使用预查询的联接(PQ别名)。此查询只会转到您的消息并获取客户端ID和基于MAX()的最新ID。通过在此处执行group By,每个客户端最多返回1条记录。我还有WHERE子句来排除您列出的ID 根据该结果,您可以对查询的其余部分进行简单的连接
SELECT
CLI.id,
CLI.nome,
CLI.senha,
CLI.email,
CLI.cpf,
CLI.celular,
CLI.data_nasc,
CLI.genero,
CLI.data_cadastro,
CLI.status,
CLI.id_socket,
ATEN.mensagem,
ARQ.nome AS foto,
PQ.data_mensagem
FROM
ut_clientes AS CLI
LEFT JOIN ut_arquivos AS ARQ
ON CLI.id = ARQ.id_tipo
AND ARQ.tipo = "ut_clientes"
INNER JOIN
( select
ATEN.id_usuario_envio,
MAX( ATEN.data_mensagem ) as MostRecentMsg
from
ut_atendimentos AS ATEN
where
ATEN.id_usuario_envio != 59163
group by
ATEN.id_usuario_envio ) PQ
ON CLI.id = PQ.id_usuario_envio
GROUP BY
CLI.id
ORDER BY
PQ.data_mensagem DESC
请用英语发帖,或将此发帖至。