从多个表中进行选择的存储过程

时间:2014-01-04 09:28:46

标签: sql database sql-server-2008 stored-procedures

我创建了一个带参数的存储过程

ALTER procedure [dbo].[myprocedure](@myName char(20))
as
   select param1
   from table1
   where name = @myName

现在这个工作正常但是当我尝试从其他表中选择参数时它不起作用我在第一次选择后尝试了这样的

(Select param2 table2)

但是我得到了

  

MS 512,Level 16,State 1,Procedure candidate,Line 3
  子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

是否有人知道使用select来从多个表中获取值?感谢

1 个答案:

答案 0 :(得分:1)

在Where子句

之后使用IN运算符而不是=
ALTER procedure [dbo].[myprocedure](@myName char(20))
as

select param1
from table1
where name = @myName

---
select param1
from table1
where name IN (Select param2 from table2)

修改

select param1
from table1
where name = @myName
union
Select param2
from table2

请注意,UNION将在合并table1和table2的结果集后删除重复值。

要保留重复值,请使用UNION ALL