sql在多字段中查询排序的问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 16:51:40
在同一个表box中,在A、B、C三个字段中查询关键字key,将任意一个字段中含有key的所有记录输出,输出时优先输出字段A含有key的记录,然后是字段B中含有key的记录,最后是字段C中含有key的记录。
刚刚学习,请专家详解
11princess,说的很对,问题就在输出时优先输出字段A含有key的记录
lazy67 你好A优先是指在排序时把A字段中含有KEY的排在前面显示把B、C中含有key的排在后面

这么多人误人子弟,人家说“输出时优先输出字段A含有key的记录...” order by 是用来干这个的啊????!!!!
既然楼主说道我那我就回答一下:)
楼下的UNION ALL是要保留重复记录,所以不用ALL
UNION子句把两个或多个SELECT语句的查询结果组合起来,默认删除重复行,保留要加ALL选项。

select box表中需要查询的字段 from
(select 1 as sortnum,box表中需要查询的字段
from box where a like '%key%' union
select 2 as sortnum,box表中需要查询的字段
from box where b like '%key%' union
select 3 as sortnum,box表中需要查询的字段
from box where c like '%key%')
order by sortnum;

试试这个,手边没有SQLServer,用Access试了

SELECT 1 AS SORTKEY, *
FROM BOX
WHERE A LIKE '%key%'

UNION ALL

SELECT 2 AS SORTKEY, *
FROM BOX
WHERE B LIKE '%key%'
AND NOT EXISTS (SELECT 'X' FROM BOX WHERE chk.A LIKE '%key%')

UNION ALL SELECT 3 AS SORTKEY, *
FROM BOX
WHERE C LIKE '%key%'
AND NOT EXISTS (SELECT 'X' FROM BOX chk WHERE chk.A LIKE '%key%' OR chk.B LIKE '