MySQL中的UNION查询

时间:2014-12-27 05:49:36

标签: php mysql

我有两个问题。

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

它按升序给出第二个查询的输出,但在查询中它按降序排列。

4 个答案:

答案 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

感谢您对此问题的评论,我正在努力解决这个问题并且上面的查询给了我完美的想法。

相关问题