gpt4 book ai didi

sql-server - 如何在子查询中返回多个结果?

转载 作者:行者123 更新时间:2023-12-02 22:38:06 25 4
gpt4 key购买 nike

我有一个 visitor 表,如下所示:

VID    Name      Address        DOB
001 Bob 101 St 03/05/2001
002 James 505 Rd 02/06/1985
003 Jill 201 Place 04/06/1970

还有一个看起来像这样的visits表:

VID    Date          Reason
001 05/07/2012 Family
001 06/01/2012 Family
003 03/02/2011 Other

我想在 VID 上对这两者进行连接查询(我已经这样做了),但也希望查询显示访问的所有(多个)结果。所以结果看起来像:

Name         DOB              Visits
Bob 03/05/2001 05/07/2012 Family, 06/01/2012 Family
James 02/06/1985
Jill 04/06/1970 03/02/2011 Other

这可能吗?我尝试了一个子查询:

SELECT Name, DOB, (SELECT Date, Reason FROM visits AS H WHERE H.VID=visitor.VID) As Visits FROM visitor;

但这给了我明显的 Subquery returned more than 1 value 错误。数据将由 PHP 解析,但我希望在一次查询中完成。

最佳答案

您可以使用FOR XML PATH 结构将您的结果连接成一列

SELECT   Name
, DOB
, STUFF((SELECT ', '
+ CONVERT(VARCHAR(16), H.Date, 101)
+ ' '
+ H.Reason
FROM visits AS H
WHERE H.VID = visitor.VID
FOR XML PATH('')), 1, 2, '')
FROM visitor;

请注意,convert 支持各种日期格式。我在示例中使用了 101,它转换为 mm/dd/yyyy

看看MSDN对于 convert 支持的所有样式。

关于sql-server - 如何在子查询中返回多个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com