0
这是我第一次看到这样一个复杂的查询。以下是查询,我需要加入profile_id另一个名为“配置文件”的表。我如何加入另一个表到这个查询
表结构
原始查询
SELECT a.*
FROM messages a
INNER JOIN
(
SELECT message_replay_id, MAX(message_id) AS latest_message
FROM messages
WHERE message_from = '1' || message_to = '1'
GROUP BY message_replay_id
) b
ON a.message_replay_id = b.message_replay_id
AND a.message_id = b.latest_message
ORDER BY a.message_id DESC
所以,这将加入ON message_to = PROFILE_ID。
这是我在我目前尝试
SELECT a.* FROM messages a
INNER JOIN(SELECT message_replay_id, MAX(message_id) AS latest_message FROM messages WHERE message_from = '1' || message_to = '1' GROUP BY message_replay_id) b
ON a.message_replay_id = b.message_replay_id AND a.message_id = b.latest_message
INNER JOIN(SELECT * AS latest_profile FROM PROFILES WHERE profile_id = b.latest_message) c
ON a.message_replay_id = b.message_replay_id AND a.message_id = b.latest_message
ORDER BY a.message_id DESC
错误信息
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS latest_profile FROM profiles WHERE profile_id = b.latest_message) c
ON a.m' at line 4
帮助我的家伙,我怎么会加入另一个表。
提供适当的DDL您的表定义 –
扩展@ MKhalidJunaid的点...考虑下列行为这种简单的两步过程:1.如果您还没有这样做,提供适当的DDL(和/或sqlfiddle ),这样我们就可以更容易地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry
'SELECT * AS latest_profile'没有意义。 'AS'用于给'SELECT'列表中的表或单列赋予一个别名。你不能给'*'别名。另外,你的第二个'ON'子句应该在'c'子查询中引用一些东西。 – Barmar