I want to write a select like this

我想写一个像这样的选择

if(`order` > 0)
    Order BY category_id, arder
if(`order` = 0)
    Order BY id

But in this select does not work

但在这个选择不起作用

SELECT *  from post 
ORDER BY if(`order` > 0,  ( category_id, `order`) ,  id)

1 个解决方案

#1


"If" is an expression returns a value, I don't think you can use it to change the "order by" statement itself.

“如果”是一个表达式返回一个值,我认为你不能用它来改变“order by”语句本身。

You can try something like this:

你可以尝试这样的事情:

select *, case when order>0 then category_id else 0 end cat_id, id
from post
order by cat_id, order, id  

更多相关文章

  1. MySQL 绿色版基本设置语句
  2. MySQL表格查询基本语句2
  3. MySQL DELETE语句和TRUNCATE TABLE语句的区别
  4. mysql添加外键语句
  5. Mysql语句 AND 和 OR 的运用
  6. MyBatis排序时使用order by 动态参数时需要注意,用$而不是# 用$传
  7. 使用MySQL正则表达式 __MySQL必知必会
  8. MySQL搜索优化(用子查询替换长正则表达式)
  9. MySql 优化之like语句

随机推荐

  1. sql2005指定字段插入空格。
  2. 请问图片存到MySQL服务器中的时候如何操
  3. mysql 全表扫描、全索引扫描、索引覆盖(
  4. docker应用-6(mysql+mycat 搭建数据库集群
  5. mysql数据库的主从同步过程详述
  6. mysql参数优化辅助工具之tuning-primer.s
  7. sql 存储过程参数为空则不作为条件
  8. Python3.6实现scrapy框架爬取数据并将数
  9. >的EF6 SQL生成。
  10. Sql经纬度计算与C#经纬度计算