我有一个表,如下:
Id, UserID, IsShared
1, 1, N
2, 1, Y
3, 2, N
4, 2, Y
5, 3, N
6, 3, Y比如UserID是1的时候,查找,可以找到Id为:1,2,4,6
就是说,当IsShared为Y的时候,谁都可以查得到,并且可以查到UserID为自己的所有数据,无论Y/N。请问这句如何写呢?
Id, UserID, IsShared
1, 1, N
2, 1, Y
3, 2, N
4, 2, Y
5, 3, N
6, 3, Y比如UserID是1的时候,查找,可以找到Id为:1,2,4,6
就是说,当IsShared为Y的时候,谁都可以查得到,并且可以查到UserID为自己的所有数据,无论Y/N。请问这句如何写呢?
select * from tb where UserID=1 or IsShared='Y'
如果是无论IsShared=Y/N的时候,这样所有的数据都可以查到的。
当IsShared为N时,只能是UserID&ShowID可查到
那是不是要改成如下:select * from tb where UserID=1 or IsShared='Y' and ShowID=2 or IsShared='Y'这样呢??
go
--> -->
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([Id] int,[UserID] int,[IsShared] nvarchar(1))
Insert #T
select 1,1,N'N' union all
select 2,1,N'Y' union all
select 3,2,N'N' union all
select 4,2,N'Y' union all
select 5,3,N'N' union all
select 6,3,N'Y'
Go
DECLARE @userID INT
SET @userid=1
Select *
from #T AS a
WHERE UserID=@userid OR [IsShared]='Y'/*
Id UserID IsShared
1 1 N
2 1 Y
4 2 Y
6 3 Y
*/
Id, UserID, IsShared,ShowID
1, 1, N, 1
2, 1, Y, 1
3, 2, N, 1
4, 2, Y, 3
5, 3, N, 4
6, 3, Y, 1我现在的查找语句是:Select * from tb where UserID=1 and ShowID=1
想把IsShared为Y的所有数据都找出来,请问如何写呢??
目前能找到:1,2,6
目标能找到:1,2,4,6
2:在相同关系 的地方 用括号括起来
select * from tb where UserID=1 or showid=2 or IsShared='Y'select * from tb where UserID=1 AND showid=2 or IsShared='Y'
select * from tb where (UserID=1 AND showid=2) or IsShared='Y'
select * from tb where UserID=1 AND (showid=2 or IsShared='Y')
分别试试 再理解一下就可灵活使用