用于amount、order、grouping元素的if else语句sql、mysql

yr9zkbsy  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(346)

我有这样的餐桌安排:
帖子可以是普通的“帖子”或评论。当这是一个注解时,它包含一个值 comment_of 指出这是某个特定帖子的评论。另一方面,这个评论可以是固定的或没有,如果 fixed=1 (固定)
问题
我想知道是否可以使用 php like语句在注解之间检索不同的数量、顺序和分组,以防存在固定的post fixed=1 .
桌柱

id_post | post | comment_of | fixed    | date
         1      hi          0           0
         2      hello       0           0
         3      comment     1           0
         4      comment     1           0
         5      comment     1           0
         6      comment     1           0
         7      comment     1           0
         8      comment     1           0
         9      comment     1           1 //(fixed - removed or not to show different outputs)
         10     comment     1           0
         11     comment     1           0
         12     comment     1           0
         13     comment     1           0

sql(mysql)

SELECT p.*
    FROM table_posts p
        WHERE p.comment_of='1' 

        if(p.fixed==1){
        GROUP BY p.fixed,p.id_post 
        ORDER BY p.fixed DESC,p.date  DESC 
        LIMIT 8
        }else{

        ORDER BY p.date  DESC 
        LIMIT 7
         }

存在固定注解时输出

last 8 results (because it has a fixed post)

     9      comment     1           1 (fixed)
     6      comment     1           0
     7      comment     1           0
     8      comment     1           0
     10     comment     1           0
     11     comment     1           0
     12     comment     1           0
     13     comment     1           0

不存在固定注解时的输出

last 7 results only (because there is no a fixed post)

     6      comment     1           0
     7      comment     1           0
     8      comment     1           0
     10     comment     1           0
     11     comment     1           0
     12     comment     1           0
     13     comment     1           0
7lrncoxx

7lrncoxx1#

如果在这两种情况下都可以得到8行,那么修改您的查询将得到您想要的结果,我只是删除了group by,ordering by fixed将首先得到fixed(如果存在),然后所有非fixed(0)将按p date排序

SELECT p.*
 FROM table_posts p
 WHERE p.comment_of='1' 
 ORDER BY p.fixed DESC, p.date DESC 
 LIMIT 8

相关问题