我有两个问题。
select * from blog_post where isDelete=0
and pOrder !=0 order by pOrder asc
select * from blog_post where isDelete=0
and pOrder=0 order by postID desc
工作正常。
但是当我尝试将这两个查询加入union
时,
select * from
((select * from blog_post
where isDelete=0 and pOrder !=0
order by pOrder asc)
union all
(select * from blog_post
where isDelete=0 and pOrder=0
order by postID desc )) as tbl1
它按升序给出第二个查询的输出,但在查询中它按降序排列。
答案 0 :(得分:0)
您可以尝试如下。
(select * from blog_post where isDelete=0 and pOrder !=0 order by pOrder asc)
UNION
(select * from blog_post where isDelete=0 and pOrder=0 order by postID desc)
答案 1 :(得分:0)
试试这个
select * from(select col1,col2,...colN,'1' as sorting from blog_post where isDelete=0 and pOrder !=0 order by pOrder asc UNION All select col1,col2,...colN,'1' as sorting from blog_post where isDelete=0 and pOrder=0 order by postID desc) temp order by sorting asc,if (sorting=1,pOrder,0) asc,if (sorting=2,postID,0) desc
答案 2 :(得分:0)
你可以试试这个:
select * from blog_post where isDelete=0 and pOrder != 0
UNION ALL
select * from blog_post where isDelete=0 and pOrder = 0
order by pOrder,postID
答案 3 :(得分:0)
我通过以下方式解决了这个问题。
从blog_post中选择*,其中isDelete = 0 order by(case pOrder当0时(从blog_post中选择Max(pOrder)+ 1),否则pOrder结束)asc,postID desc
感谢您对此问题的评论,我正在努力解决这个问题并且上面的查询给了我完美的想法。