首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql:按列名排序结果

mysql:按列名排序结果
EN

Stack Overflow用户
提问于 2016-01-11 11:48:01
回答 6查看 1.6K关注 0票数 6
代码语言:javascript
复制
$qry="select * from table where category='car' or title='car' or description='car'";

但我希望输出先按类别列出行,然后按标题列出行,然后按描述列出行。

*编辑:实际上我使用的是一个类似的操作符来搜索**

示例:

代码语言:javascript
复制
 id category title description   
  1    car 
  2    car
  3            car
  4            car
  5            car
  6                    car

除了使用工会之外,还有别的办法吗?

提前谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-01-11 11:50:40

您可以使用具有正确键的ORDER BY来完成此操作。在MySQL中,您可以:

代码语言:javascript
复制
ORDER BY (category = 'car') DESC,
         (title = 'car') DESC,
         (description = 'car') DESC

MySQL将布尔表达式视为数值上下文中的整数,0表示false,1表示true。所以DESC把真正的版本放在第一位。

如果您愿意,还可以简化WHERE子句:

代码语言:javascript
复制
WHERE 'car' IN (category, title, description)
票数 9
EN

Stack Overflow用户

发布于 2016-01-11 11:59:18

您可以使用以下语句获得此结果:

代码语言:javascript
复制
SELECT * FROM mytable 
WHERE (category='car' OR title='car' OR description='car')
ORDER BY category = 'car' DESC,
title = 'car' DESC,
description = 'car' DESC

它是如何工作的?

它将按照查询中提到的那样,通过DESC通过sequentially设置数据顺序。你可以随意改变顺序。

票数 2
EN

Stack Overflow用户

发布于 2016-01-11 11:54:24

您可以对多个列使用ORDER BY,如:

代码语言:javascript
复制
SELECT * FROM tablename ORDER BY category DESC, title DESC, description DESC

我试过了,成功了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34720813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档