mysql:按列名排序结果

时间:2016-01-11 11:48:02

标签: php mysql sql

$qry="select * from table where category='car' or title='car' or description='car'";

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

****编辑:实际上我正在使用like运算符来搜索**

示例:

 id category title description   
  1    car 
  2    car
  3            car
  4            car
  5            car
  6                    car

除了使用union之外还有什么方法吗? 提前致谢。

6 个答案:

答案 0 :(得分:9)

您可以使用正确的密钥使用ORDER BY执行此操作。在MySQL中,你可以这样做:

ORDER BY (category = 'car') DESC,
         (title = 'car') DESC,
         (description = 'car') DESC

MySQL将布尔表达式视为数字上下文中的整数,0表示false,1表示true。因此DESC将真实版本放在第一位。

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

WHERE 'car' IN (category, title, description)

答案 1 :(得分:2)

您可以使用以下声明获得此结果:

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 :(得分:1)

您可以将ORDER BY用于多个列,例如:

SELECT * FROM tablename ORDER BY category DESC, title DESC, description DESC

我已经尝试了它worked

enter image description here

答案 3 :(得分:1)

Try this ,

SELECT * FROM table where 'car' IN (category, title, description)  ORDER BY category DESC, title DESC, description DESC

答案 4 :(得分:0)

您的查询中可以有多个ORDER BY子句。

    select *from table where category='car' or title='car' or description='car' ORDER BY category DESC, title DESC, description DESC

请参阅此答案以供参考。 mysql query order by multiple items

答案 5 :(得分:0)

尝试此查询:

select * from table 
where category='car' or title='car' or description='car' 
order by 1 desc, 2 desc, 3 desc