将用户的验证标志作为参数



我有表用户

Userid  flag 
145     1
142     0

第二张表销售

salesId  date        amount
252      01/01/2021  125
23       01/02/2021  300

我需要每次为用户参数检查是否显示数据的标志f或者用户145我将显示销售表中的所有内容,因为flag=1但是用户142我不会显示任何内容,因为flag=0

CREATE PROCEDURE Sales   (@userID nvarchar(30))
AS
SELECT * FROM sales 
cross join users
WHERE UserID= @userID and flag =1
GO;

结果不正确,如何纠正

您的版本可以使用select sales.*。然而,我会使用:

select s.*
from sales s
where exists (select 1
from users u
where u.UserId = @UserId and u.flag = 1
);

这清楚地表明,users只是用于过滤,并且这两个表之间实际上没有关系(当然,除了许可(。

最新更新