
[英]Mixing variable assigment and data retrieval - MySQL vs MS SQL Server
[英]GroupBy (MS SQL Server vs MySQL)
我和这个人有类似的问题: GROUP BY (MySQL vs SQL server)
SELECT
SubscriberKey,
EmailAddress,
MIN(CreatedDate) AS CreateDate,
FROM [_ListSubscribers]
WHERE EmailAddress = 'email@address.com'
AND STATUS = 'active'
GROUP BY EmailAddress
如何查看与最旧记录的 email 地址相关联的SubscriberKey是什么? SubscriberKey是一个 TEXT 字段。 我尝试使用 MIN(SubscriberKey) 但它没有返回正确的值。 并且在 GroupBy 子句中添加它也无法返回正确的值。
这是我想要的结果:
订户密钥 | 电子邮件地址 | 创建日期 |
---|---|---|
电子邮件@地址.com | 电子邮件@地址.com | 2018 年 8 月 21 日 |
这是此 email 记录的完整数据库示例:
订户密钥 | 电子邮件地址 | 创建日期 | 地位 |
---|---|---|---|
电子邮件@地址.com | 电子邮件@地址.com | 2018 年 8 月 21 日 | 积极的 |
Jadfsok134324 | 电子邮件@地址.com | 2020 年 5 月 15 日 | 积极的 |
在这两个数据库中,您将使用相关子查询或row_number()
:
SELECT l.*
FROM (SELECT l.*,
ROW_NUMBER() OVER (PARTITION BY emailaddress ORDER BY CreatedDate DESC) as seqnum
FROM [_ListSubscribers] l
WHERE EmailAddress = 'email@address.com' AND STATUS = 'active'
) l
WHERE seqnum = 1;
当然,如果您只想要一行,那么在任一数据库中fetch first
都更容易:
SELECT l.*
FROM [_ListSubscribers] l
WHERE EmailAddress = 'email@address.com' AND STATUS = 'active'
ORDER BY createdAt ASC
OFFSET 0 ROW FETCH FIRST 1 ROW ONLY;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.