我正在尝试查询 CRM 用户的数据库,该表称为crm_main。为了便于解释,我们假设此表中有 3 个用户。我有另一个名为crm_comments的表,它为每个用户存储多个带有时间戳的评论。
有没有办法选择 crm_main 中的所有用户,并且如果 crm_comments 表中存在评论,则将最近的用户(基于时间戳)附加到该行?我尝试过使用 CROSS APPLY 方法:
SELECT *
FROM crm_main d
CROSS APPLY
(
SELECT TOP 1 timestamp, customerid
FROM crm_comments m
WHERE m.customerid = d.id
ORDER BY
m.timestamp DESC
) m
这样做的问题是,如果 crm_comments 表中存在针对用户的评论,它只会从 crm_main 表返回用户。因此,如果用户 id 1 和 3 在 crm_comments 表中有与之关联的评论,它们会显示,但没有评论的用户(用户 id 2)不会显示。有没有办法查询它们并且只为时间戳显示NULL?
这样所有 3 都会显示,但 id#1 和 id#3 将有时间戳,而 id#2 将只有 NULL。
也许有一种方法可以用 CASE 做到这一点?