我有一个表像如何为此SQL查询编写左外连接?
ParsereplyId Message Callid status EMailid subject
------------------------------------------------------------------------
1 hi 2222 Replied [email protected] Log a cll
2 hello 2222 Replied [email protected] Re:
3 hi2 2222 New [email protected] Re:log a cll
4 hello2 2223 Read [email protected] Log a cldf
5 how r u 2223 New [email protected] Re:Log a
从上面的表格我想下面的输出:
ParsereplyId Message Callid status EMailid subject
-------------------------------------------------------------------
3 hi2 2222 New [email protected] Re:log a cll
5 how r u 2223 New [email protected] Re:Log a
我曾尝试下面的查询。 但我想做到在LEFT OUTER JOIN
SELECT A.[ParsedReplyId]
, A.[EMailId]
, A.[Message]
, A.[CallId]
, [UM_User].[UserName]
FROM IM_IncidentReplyMail AS A
INNER JOIN
(SELECT MAX(ParsedReplyId) AS parseid
FROM [IM_IncidentReplyMail]
GROUP BY [CallId]) AS B
INNER JOIN
[UM_User] ON [UM_User].[EmailId] = A.[EmailId]
WHERE
B.parseid = A.[ParsedReplyId]
如何实现上面的SQL查询内部联接?
编辑:我纠正了我的错误上面
UM_USer表包含3210,基于电子邮件ID从两个表中我能得到该邮件的用户名。
编辑2: 我可以使用左外连接,而不是使用内部联接像
SELECT A.[ParsedReplyId]
, A.[EMailId]
, A.[Message]
, A.[CallId]
, [UM_User].[UserName]
FROM IM_IncidentReplyMail AS A
LEFT OUTER JOIN
(SELECT MAX(ParsedReplyId) AS parseid
FROM [IM_IncidentReplyMail]
GROUP BY [CallId]) AS B
ON 1=1
LEFT OUTER JOIN
[UM_User] ON [UM_User].[EmailId] = A.[EmailId]
WHERE
B.parseid = A.[ParsedReplyId]
在这里,我使用1 = 1个条件这是不是在查询中使用的正确方式。它使我的代码变得丑陋。所以我要求你帮忙解决这个问题。
你知道你错过了'INNER'和'JOIN'权之间的空间修饰的查询? – Coderchu
正确地给出表格的详细信息... – Avi
我假设这是您正在使用的SQL Server,是否正确?你想为每个CallID组使用ParsedReplyID最高的记录吗?如果是这样,你可以从内部联接中选择*从表名中选择*(选择max(parsedreplyid)作为mp,callid从表名组中通过callid)b对a.parsedreplyid = b.mp' – zedfoxus