我正在努力破译一些存储过程,并且在这个主题上的词汇量很少。有人可以向我解释这个'1'在下面的陈述中起什么作用?我找不到任何DISTINCT语法教程来解释这个。我指的是声明中的实际“1”。
USE TEST
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].sp_F_SQL
(@Id int)
WITH ENCRYPTION AS
SELECT DISTINCT
dbo.MAP_SQL.rID,
dbo.MAP_SQL.lID,
dbo.MAP_SQL.cID,
**1** as RESPFACT,
dbo.MAP_SQL.Longitude,
dbo.MAP_SQL.Latitude,
dbo.MAP_SQL.Altitude,
...
答案 0 :(得分:2)
1
与DISTINCT
无关。它只是添加了一个标题为RESPFACT
的输出列,其值为1
,适用于所有行。我怀疑消费输出需要该列。
SELECT DISTINCT
仅返回输出中的“distinct”行 - 表示所有列值相等的行。
e.g。如果输出没有 distinct
1 2 ABC DEF
2 3 GHI JLK
2 1 ABC DEF
1 2 ABC DEF
然后第1行和第4行将被视为“相等”,并且将返回第1行和第4行:
1 2 ABC DEF
2 3 GHI JLK
2 1 ABC DEF
请注意,即使4列值中有3列匹配,第1行和第3行也不相等。
答案 1 :(得分:2)
1
生成一个名为RESPFACT
的列。此值始终为1
。
我不能说为什么这对sp_F_SQL
程序很重要。
distinct
返回唯一的行。如果select
中的列存在重复值,则只返回一行。显然,RESPFACT
列在所有行中都是相同的,因此它不会影响返回的行。