我有一个表,如下:
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。请问这句如何写呢?

解决方案 »

  1.   


    select * from tb where UserID=1 or IsShared='Y'
      

  2.   

    当IsShared为Y的时候,谁都可以查得到,并且可以查到UserID为自己的所有数据,无论Y/N
      

  3.   

    IsShared为Y的时候不可能查到所有的数据呀!
    如果是无论IsShared=Y/N的时候,这样所有的数据都可以查到的。
      

  4.   

    因为还有一个列为ShowID,
    当IsShared为N时,只能是UserID&ShowID可查到
    那是不是要改成如下:select * from tb where UserID=1 or IsShared='Y' and ShowID=2 or IsShared='Y'这样呢??
      

  5.   

    Pattern 1   楼主的情况select * from tb where UserID=1 or IsShared='Y'  Pattern 2   6楼的情况select * from tb where UserID=1 and IsShared='N'  
      

  6.   

    我认为他可能是想查询用户是1 并且IsShared="N" 的情况
      

  7.   

    use Tempdb
    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
    */
      

  8.   

    select * from tb where (UserID=1 and showid=2) or IsShared='Y'
      

  9.   

    9楼的说法,我错了。因为我还有一个列名为ShowID.
    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
      

  10.   

    select * from tb where UserID=1 or showid=2 or IsShared='Y'
      

  11.   

    1:熟悉 AND OR 的用法
    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')
    分别试试 再理解一下就可灵活使用