SQL语句中UNION排序问题

表A如下3个字段
ID序号 软件名称 软件简介

在搜索时先检查软件名称中是否有关键字,然后再检查软件简介.
我是这样写的
select * from 表A where 软件名称 like '%迅雷%'
union
select * from 表A where 软件简介 like '%迅雷%'
但是查询输出时是按照默认索引列ID进行排列的
如何能实现按照语句中的优先级排列?也就是说优先显示第一条查询语句查到的结果,之后才是第二条语句的结果,而不是把所有记录集合到一起后混排.
补充下 数据库是ACCESS

代码改写如下:
select a.输出字段1, a.输出字段2, a.输出字段3, ...a.输出字段n from
(select * ,1 as px from 表A where 软件名称 like '%迅雷%'
union
select * ,2 from 表A where 软件简介 like '%迅雷%') a order by a.px

如果不在意多出一个用于排序的字段“px”的话,代码可简化如下
select * ,1 as px from 表A where 软件名称 like '%迅雷%' order by 1
union
select * ,2 from 表A where 软件简介 like '%迅雷%'

***注意,因人为增加了一个排序用数字字段(第一个查询用1,第二个用2),UNION关键字的删除两个查询之间重复数据的功能会不起作用,如果需要保持删除重复记录的能力,则需要使用DISTINC关键字,例如:
select distinct a.输出字段1, a.输出字段2, a.输出字段3, ...a.输出字段n from
(select * ,1 as px from 表A where 软件名称 like '%迅雷%'
union
select * ,2 from 表A where 软件简介 like '%迅雷%') a order by a.px

上机试一试吧
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-19
请看一楼回答

sql 语句 用union合并表 但是我在前面加了个字段用来排序
在SQL语句中使用UNION合并表时,若希望在前面加入字段用于排序,需注意拼接字符串的格式。正确拼接应为: "' product '". 若你直接使用包含变量名的拼接方式,数据库执行时,变量值不会被替换进字符串。对于开发程序,确保在使用UNION时,合并的三个源表的列数量和列类型一致极为重要。在相同位置加上用...

SQL语句中UNION排序问题?
代码改写如下:\\x0d\\x0aselect a.输出字段1, a.输出字段2, a.输出字段3, ...a.输出字段n from \\x0d\\x0a(select * ,1 as px from 表A where 软件名称 like '%迅雷%'\\x0d\\x0aunion\\x0d\\x0aselect * ,2 from 表A where 软件简介 like '%迅雷%') a order by a.px\\x0...

SQL语句中UNION排序问题
select a.输出字段1, a.输出字段2, a.输出字段3, ...a.输出字段n from (select * ,1 as px from 表A where 软件名称 like '%迅雷%'union select * ,2 from 表A where 软件简介 like '%迅雷%') a order by a.px 如果不在意多出一个用于排序的字段“px”的话,代码可简化如下 sel...

select语句中使用Union该注意
在SQL中使用`UNION`语句时,需注意以下几点。首先,多条`SELECT`语句通过`UNION`连接时,每条`SELECT`语句应包含相同数量的列,但列名顺序可以不同。其次,各`SELECT`语句中的列数据类型必须兼容,允许数据库系统进行隐式类型转换,如双精度数转换为单精度数。再者,`UNION`操作会自动去除重复行,因此,...

union组合结果集时的order问题
在处理SQL查询时,使用UNION来组合结果集时,常见一个问题涉及到ORDER BY子句的使用。通常,UNION不支持在各个SELECT语句中使用ORDER BY,但允许在最后一个SELECT语句之后使用。这意味着,仅能对最终的组合结果集进行排序。然而,有时候确实需要在每个查询中先进行排序再进行组合,这并不符合标准用法。要解决...

sql 使用union后结果集排序,无法理解
由于Union需要对查询结果集进行排序操作,当数据量较大时,若非特殊需要,尽量不要使用Union操作,用Union All操作,然后对Union All出来的结果执行去重操作即可,所以结果不一样-- union allselect '张三' nameunion allselect '李四' union allselect '王五' union allselect '王五' union allselect '...

SQL语句中:UNION与UNION ALL的区别
UNION [SQL 语句 2]2、UNION ALL 的语法如下:[SQL 语句 1]UNION ALL [SQL 语句 2]效率:UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。2、对排序的...

请教: SQL中的union结果优先排序问题
加入 NEWS 表里有 名字,年龄,生日 那么:select * from (select 1 as 顺序 ,名字,年龄,生日 from news where title like '%亲人%'union all select 2 as 顺序,名字,年龄,生日 from news where title like '%朋友%') a order by 顺序 -- 想家其他字段 就 再加上 ...

sqlunion用法
用于合并两个或多个SELECT语句的结果集。UNION内部的SELECT语句必须拥有相同数量的列。其列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。默认地,UNION操作符选取不同的值。如果允许重复的值,请使用UNIONALL。UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。

关于sql中的union问题?
UNION操作符用于结合两个或更多查询的结果集,UNION ALL则不移除重复项。而INTERSECT操作符用于找到两个查询结果集中的共同元素,而EXCEPT操作符用于从一个查询结果集中移除另一个查询结果集中的元素。通过这些操作符,我们可以构建复杂的查询来生成所需的数据集。例如,为了创建一个包含两个表中不重叠元素...

相似回答