在SQL中,ALL SELECT TOP 1 NULL,NULL是做什么的?

问题描述:

我有这条SQL查询的结尾,我不明白:UNION ALL SELECT TOP 1 NULL,NULL在SQL中,ALL SELECT TOP 1 NULL,NULL是做什么的?

有人可以一步一步解释它吗?

干杯

+0

查看“UNION ALL”(包括NULL)和MS SQL Server的“TOP”。 – jarlh

+0

这只是较大查询的一个片段。你能发布整个查询还是至少有代表性的样本? –

你没有 “解析” 正确的查询:ALL属于UNION,如UNION ALL,不SELECT

查询的部分SELECT TOP 1 NULL, NULL只是简单地将具有两个NULL列的行添加到SELECT以上的结果UNION ALL以上。如果您愿意,您可以放弃TOP 1,因为这是不必要的。

例如,如果您有疑问

SELECT FirstName, LastName 
FROM User 
UNION ALL 
SELECT NULL, NULL 

这样的查询会产生从表UserFirstName, LastName元组随后两个NULL秒的单个元组的列表。

这个技巧可能很有用,因此从查询中接收数据的程序可以决定何时停止阅读。然而,这种技巧与边界有关,因为RDBMS可以返回UNION ALL底部产生的一对NULL,在其他名称之前,之后或中间。

+0

这里顶部是不必要的。 – sagi

+0

@sagi当然是。我的理解是,有人编写了这个查询,OP正在试图理解它。无论谁写了这个查询,都会放入'TOP 1',所以我不妨将它放在那里。 – dasblinkenlight

+0

我会小心*收到您的查询数据的程序可以决定何时停止阅读*因为没有保证,这个添加的tupel将是结果集中的最后一行... – Shnugo