我对SQL不太满意,请帮助我。 在我的存储过程中,我得到一个参数。 然后,基于此参数,我想从另一个表中获取ID并将此ID放入我的另一个变量中,但问题是ID可能是基于此参数的多个。
DECLARE @RateID int;
SET @RateID = (
Select [dbo].[Rate].RateID
from [dbo].[Rate]
Where [dbo].[Rate].Rate = 160
)
我收到错误,因为Subquery returned more than 1 value
如何从子查询结果中获取第一个值并设置为@RateID?
答案 0 :(得分:2)
你可能想这样试试:
DECLARE @RateID int;
SET @RateID = (
Select Top 1 [dbo].[Rate].RateID
from [dbo].[Rate]
Where [dbo].[Rate].Rate = 160
)
在您当前的查询中,可能存在这样一种情况,即您的表有多于一行满足条件Rate = 160
,因此select
查询将返回超过1行,您无法存储一个变量。
但是在 MYSQL 中,您必须使用LIMIT 1
,因为TOP 1
在MYSQL中不起作用。
答案 1 :(得分:1)
如果您只想要第一个结果
Select TOP 1 [dbo].[Rate].RateID
取代
Select [dbo].[Rate].RateID
答案 2 :(得分:1)
您可以使用SET @RateID = (
Select Top 1 [dbo].[Rate].RateID
from [dbo].[Rate]
Where [dbo].[Rate].Rate = 160
)
答案 3 :(得分:1)
您可以使用以下语法:
Select top 1
@RateId = RateId
from
Rate
where
Rate.Rate = @Rate
order by
RateId
如果您想要最后一个,可以将订单更改为:
order by
RateId Desc