为了说明,假设我有两个表,如下所示:
VehicleID Name
1 Chuck
2 Larry
LocationID VehicleID City
1 1 New York
2 1 Seattle
3 1 Vancouver
4 2 Los Angeles
5 2 Houston
我想编写一个查询以返回以下结果:
VehicleID Name Locations
1 Chuck New York, Seattle, Vancouver
2 Larry Los Angeles, Houston
我知道可以使用服务器端游标完成此操作,即:
DECLARE @VehicleID int
DECLARE @VehicleName varchar(100)
DECLARE @LocationCity varchar(100)
DECLARE @Locations varchar(4000)
DECLARE @Results TABLE
(
VehicleID int
Name varchar(100)
Locations varchar(4000)
)
DECLARE VehiclesCursor CURSOR FOR
SELECT
[VehicleID]
, [Name]
FROM [Vehicles]
OPEN VehiclesCursor
FETCH NEXT FROM VehiclesCursor INTO
@VehicleID
, @VehicleName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Locations = ''
DECLARE LocationsCursor CURSOR FOR
SELECT
[City]
FROM [Locations]
WHERE [VehicleID] = @VehicleID
OPEN LocationsCursor
FETCH NEXT FROM LocationsCursor INTO
@LocationCity
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Locations = @Locations + @LocationCity
FETCH NEXT FROM LocationsCursor INTO
@LocationCity
END
CLOSE LocationsCursor
DEALLOCATE LocationsCursor
INSERT INTO @Results (VehicleID, Name, Locations) SELECT @VehicleID, @Name, @Locations
END
CLOSE VehiclesCursor
DEALLOCATE VehiclesCursor
SELECT * FROM @Results
但是,如您所见,这需要大量代码。我想要的是一个通用函数,它将允许我执行以下操作:
SELECT VehicleID
, Name
, JOIN(SELECT City FROM Locations WHERE VehicleID = Vehicles.VehicleID, ', ') AS Locations
FROM Vehicles
这可能吗?还是类似的东西?
如果使用的是SQL Server 2005,则可以使用FOR XML PATH命令。
SELECT [VehicleID]
, [Name]
, (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX))
FROM [Location]
WHERE (VehicleID = Vehicle.VehicleID)
FOR XML PATH ('')), 1, 2, '')) AS Locations
FROM [Vehicle]
它比使用游标容易得多,并且似乎运行良好。
问题内容: 我有两个表:tbl_listings,其列为:prop_id; 另一个表:tbl_bookings,其列为:prop_id,booking_date。 我想编写一个查询,计算prop_id在tbl_bookings中出现的所有时间,然后用该查询的结果填充tbl_listings中的新列。 我的查询看起来像: 但由于某种原因,我收到一条错误消息:子查询返回多于1行。我该如何解决? 问题答
问题内容: 我有要查询的模型(称为“活动”)(使用Mongoose)。他们的架构如下所示: 当我询问他们,我填充,,,和字段(所有引用)。在那之后,我也深入了这个领域。这是我的查询代码: 这已经是一个相对复杂的查询,但是我需要做更多。如果它碰到了声明的一部分,我 还 需要确保的字段等于字符串。我尝试使用,但是由于必须先填充事件,因此无法查询其任何字段。我还需要在其他多个查询中实现相同的目标。 如我
我的代码基本上有两个部分,它们各自工作,但不能一起工作。所以我想我有一个语法问题。 第一部分是创建表,第二部分是填充表。问题是,这两个部分共享表名的变量。 每当CSV被放入我的s3存储桶时,它就作为lambda函数运行。 运行后,它会成功创建表,但不会填充表。以“任务在3.00秒后超时”结尾。几秒钟后,它再次启动并返回“表已存在”,但仍然为空。 如果我只运行batch_writer部分,只要它已经
我正在与这种情况作斗争...我在SFDC(机会)中有一个标准对象,它有一个指向用户对象的自定义查找字段,我试图用创建自定义对象的用户名称填充该字段在机会布局中可用... i、 e.新建GOP检查表---然后选择检查表的类型---然后填写所有必填字段并单击保存,这将指向Opportunity视图。首先,这是可行的吗?我知道查找字段可能很棘手。我的第二个问题是,通过编程(触发器)或使用工作流和字段更新
尝试获取与字段ABC的值相匹配的文档。尝试了“必须”或“应该”查询,但未得到预期结果。有人能建议我应该尝试什么样的查询吗?使用HighLevelRestClient。 或 映射 条件工作正常。如果我只是反转条件并忽略字段值,那么我就会得到结果。 X1和Y1是精确的字段值(想想枚举) Still query返回所有文档。这应该已将文档筛选为匹配的值 样本文档
问题内容: 有没有办法从mySQL的子查询中指定父查询字段? 例如: 我已经用PHP编写了一个基本的公告板类型程序。 在数据库中,每个帖子都包含:id(PK)和parent_id(父帖子的ID)。如果帖子本身是父项,则其parent_id设置为0。 我正在尝试编写一个mySQL查询,该查询将查找每个父级帖子以及父级拥有的子级数。 棘手的是,第一个 ID 不知道它应该引用子查询之外的第二个 ID 。