验证用户标志作为参数

verify flag for user as parameter

我有 table 个用户

Userid  flag 
145     1
142     0

秒table销量

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

我每次都需要检查用户参数标志是否显示数据 对于用户 145 我将显示 table 销售中的所有内容,因为 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 只是用于过滤,并且两个表之间确实没有任何关系(当然除了权限之外)。