gpt4 book ai didi

sql - select if exists else select 0 是否查询两次?

转载 作者:行者123 更新时间:2023-12-04 18:20:18 24 4
gpt4 key购买 nike

我正在做这样的密码验证查询。

if exists(select UserID from users where UserName=@UserName and Password=@Password) 
select UserID from users where UserName=@UserName and Password=@Password
else
select 0

但在我看来,我为一个结果查询了两次
我可以这样做吗
Select UserID Where Username = @UserName and Password = @Password

当我得到我的结果时,只需检查阅读器的结果数量?
if (!myReader.HasRows)
MessageBox.Show("UserName not found or Password invalid");
else
//do login stuff

猜猜我要问的是,哪个更好,或者它们是一样的?

最佳答案

用这个:

SELECT  ISNULL
(
(
SELECT userId
FROM users
WHERE userName = @userName
AND password = @password
),
0
)

您检查记录数量的解决方案当然也可以。

请注意,它将始终只返回一条记录,如果 userName 将失败。不是唯一的,并且有 @userName 的重复项.

正如@Andriy M 所指出的, COALESCE在这里没有帮助,因为它在内部被重写为 CASE容易出现同样的问题。

回答您的问题:是的,原始批处理将访问 users两次。

关于sql - select if exists else select 0 是否查询两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com