gpt4 book ai didi

sql - 在 MySQL 中对联合查询进行排序

转载 作者:可可西里 更新时间:2023-11-01 07:49:20 36 4
gpt4 key购买 nike

我正在为职位列表网站制作搜索功能。为此,我需要首先显示具有匹配标题的列表,然后显示具有匹配描述的工作列表。这是查询,我现在正在使用:

例子:

(SELECT * FROM `jobs` WHERE title LIKE '%java%developer%') 
UNION DISTINCT
(SELECT * FROM `jobs` WHERE description LIKE '%java%developer%')

但是,我还需要按时间戳对结果进行排序,以便最先显示最新的结果。就像它应该给出具有按时间戳排序的匹配标题的结果,然后给出具有按时间戳排序的匹配描述的列表。

最佳答案

我可能会写类似这样的查询:

  select *, ((title like '%…%')*2 + (description like '%…%')) as rank
from jobs
where title like '%…%'
or description like '%…%'
order by rank desc, time desc

这样,标题和描述都匹配的行将首先出现,然后是标题匹配,然后是描述匹配。我没有测试过,但通常 mysql 可以很好地将 bool 转换为 int (true: 1, false: 0)

关于sql - 在 MySQL 中对联合查询进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163503/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com