繁体   English   中英

查询返回 N 个随机连接的记录

[英]Query to Return N Random Concatenated Records

我接到了一项任务,我需要使用 Microsoft SQL 服务器从另一个表中返回与该公司关联的 3 个随机 email 地址的逗号分隔列,其中包含一个表中所有公司的列表。 到目前为止,我已经能够以随机顺序获得公司和所有相关的 email 地址,但我现在需要将此列表限制为 3 个。每家公司至少有 4 个相关的 email 地址,但可以想象有数百个。 这是我的 SQL 原样。

SELECT c.ID, c.companyName, 
STRING_AGG(e.emailAddress, ', ') WITHIN GROUP (ORDER BY NEWID()) AS eMailAddress
FROM companies c
INNER JOIN email e ON e.companyID = c.ID
GROUP BY c.ID, c.companyName

我很感激对此的任何想法。

只需在以下位置CROSS APPLY 3 个 email 地址:

SELECT c.ID, c.companyName, 
STRING_AGG(e.emailAddress, ', ') AS eMailAddress
FROM companies c
CROSS APPLY (
    SELECT TOP 3 *
    FROM email e
    WHERE e.companyID = c.ID
    ORDER BY NEWID()
) e
GROUP BY c.ID, c.companyName;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM