MYSQL 查询一个表多个字段时 查询结果怎么指定某个字段匹配到的数据显示在前面?

白猫猫 2017-06-01 04:51:05
比如模糊搜索a b c三个字段,怎么让a字段有关建字的显示在前面 b c字段的排在后面
...全文
2642 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2018-08-07
  • 打赏
  • 举报
回复
drop table if exists t;
CREATE table t(
a varchar(20),
b varchar(20),
c varchar(20)
);
INSERT into t values('ffee','bbzeb','123');
INSERT into t values('ddee','bbaeb','1234');
INSERT into t values('kkn','bbfaeb','1235');
INSERT into t values('kkn','bbgaeb','1235');
INSERT into t values('kkn','bbgaeb','12935');

select * from t
where a like '%d%'
or b like '%z%'
or c like '%9%'
ORDER BY
CASE when a like '%d%' then 0
when b like '%z%' then 1
else 2 end
;

RINK_1 2018-08-07
  • 打赏
  • 举报
回复

select * from 
(select *,0 as rn from table where a like '%关键字%'
union 
select *,1 as rn from table where b like '%关键字%'
union
select *,1 as rn from table where c like '%关键字%') as A
order by rn 
startgetnow 2018-08-07
  • 打赏
  • 举报
回复
根据你的意思应该是把b,c字段的数据优先显示,a显示在最后:
第一步:根据条件查询出数据
select * from table where b like '%value%' or c like '%value%' or a like '%value%'
第二步:遍历查询结果
将b,c的数据放入第一个数组,a的数据放入第二个数组,最后再将两个数组拼接起来即可。
  • 打赏
  • 举报
回复
SELECT A,B,C FROM T1 ORDER BY A DESC
小白619 2017-06-05
  • 打赏
  • 举报
回复
select a,b,c from 表?
仰视的菜鸡 2017-06-05
  • 打赏
  • 举报
回复
select * from 表 where like 字段名='a,b,c' order by a desc
二月十六 版主 2017-06-01
  • 打赏
  • 举报
回复
SELECT * FROM 表 ORDER BY a

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧