代码之家  ›  专栏  ›  技术社区  ›  user7030548

用单连接选择语句替换/替换并集

  •  3
  • user7030548  · 技术社区  · 7 年前

    posts retrieve 所有的 records select statement single table -

    select ID from posts where UserID= 23487 and postlevel <> 1
    select ID from posts where ParentID in (select ID from posts where UserID= 23487 and postlevel <> 1)
    

    UNION 像下面这样的运算符我可以返回单个表-

    select ID from posts where UserID= 23487 and postlevel <> 1
    UNION 
    select ID from posts where ParentID in (select ID from posts where UserID= 23487 and postlevel <> 1)
    

    enter image description here

    在下面试用 JOIN 查询,但未获得预期结果并返回 NULL -

    select ID from posts cs
    LEFT JOIN posts cs1 ON cs.ID = cs1.ID
    where cs.UserID = 23487 and cs.PostLevel <>1 and cs.ParentID = cs1.ID
    

    我想用 SELECT 而不是 联合 以获得如上所示的所需输出。

    3 回复  |  直到 7 年前
        1
  •  3
  •   Tim Biegeleisen    7 年前

    你有没有试过在一次测试中同时测试这两种情况 WHERE

    select ID
    from posts
    where
        (UserID = 23487 and postlevel <> 1) or
        (ParentID in (select ID from cs_posts where UserID= 23487 and postlevel <> 1))
    
        2
  •  1
  •   Tien Nguyen Ngoc    7 年前

    你可以试试这个

    select ID
    from posts
    where
        (UserID = 23487 and postlevel <> 1) or
        (EXISTS (select 1 from cs_posts where UserID= 23487 and postlevel <> 1 and ID = ParentID) )
    
        3
  •  0
  •   Esperento57    7 年前

    不需要联合、不存在……试试这个:

    select distinct F1.id from post F1 inner join
     posts f2 on f2.UserID= 23487 and f2.postlevel <> 1 AND 
    (F1.id=f2.id or F1.parentid=f2.id)