使用 SQL 服务器通过存储过程调用手动将记录添加到 SQL select 查询的结果
Manually add records to the result of a SQL select query via stored procedure call using SQL Server
CREATE PROCEDURE [dbo].[GetAllLocations]
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT [Location] from Emp WHERE [Location] IS NOT NULL;
END
我需要一个存储过程来从一个 select 查询中提取结果,然后我需要向该查询添加 2 个额外的结果。我不想将另外两个结果插入 table,我只想 "hardcode them in"。
所以基本上如果上面的查询有这个结果:
New York
Kansas
California
New Mexico
我想手动将缅因州和佛罗里达州添加到该列表,但我不想将这些记录添加到该查询中的 "Emp" table。我假设某种 temp table 可能会完成这项工作,但我无法在线找到任何解决方案,而且我不熟悉 temp tables。
您可以使用 union
,如:
SELECT [Location]
FROM Emp
WHERE [Location] IS NOT NULL
UNION -- on purpose to remove duplicates
SELECT Location
FROM (VALUES ('Maine'), ('Florida')) v(Location);
就是说,我认为没有充分的理由将其作为存储过程。您应该将其设为视图或用户定义的 table 函数。也就是说,代码可以在 SELECT
查询中使用。
CREATE PROCEDURE [dbo].[GetAllLocations]
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT [Location] from Emp WHERE [Location] IS NOT NULL;
END
我需要一个存储过程来从一个 select 查询中提取结果,然后我需要向该查询添加 2 个额外的结果。我不想将另外两个结果插入 table,我只想 "hardcode them in"。
所以基本上如果上面的查询有这个结果:
New York
Kansas
California
New Mexico
我想手动将缅因州和佛罗里达州添加到该列表,但我不想将这些记录添加到该查询中的 "Emp" table。我假设某种 temp table 可能会完成这项工作,但我无法在线找到任何解决方案,而且我不熟悉 temp tables。
您可以使用 union
,如:
SELECT [Location]
FROM Emp
WHERE [Location] IS NOT NULL
UNION -- on purpose to remove duplicates
SELECT Location
FROM (VALUES ('Maine'), ('Florida')) v(Location);
就是说,我认为没有充分的理由将其作为存储过程。您应该将其设为视图或用户定义的 table 函数。也就是说,代码可以在 SELECT
查询中使用。