我有一个名为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)
输出
在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
预期
我想使用JOIN
或使用单个SELECT
而不是UNION
来获取记录,以获得所需的输出,如上所示。
答案 0 :(得分:4)
您是否尝试在单个WHERE
子句中将两个条件进行OR运算:
select ID
from posts
where
(UserID = 23487 and postlevel <> 1) or
(ParentID in (select ID from cs_posts where UserID= 23487 and postlevel <> 1))
答案 1 :(得分:1)
你可以试试这个
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) )
答案 2 :(得分:0)
没有必要结合或存在或存在....试试这个:
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)
如果您想保留重复值,请删除不同的