我有表用户
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
只是用于过滤,并且这两个表之间实际上没有关系(当然,除了许可(。