$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之外还有什么方法吗? 提前致谢。
答案 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。
答案 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