SQL搜索标题字段与喜欢和定制订购
问题描述:
我有一个歌曲数据库,需要实施搜索。SQL搜索标题字段与喜欢和定制订购
我要产生结果的列表,列表的头是
like 'st%'
,其余的结果是
like '%st%'
结果如果我使用UNION使其能正确产生一个没有重复的列表,但不是按照我想要的顺序。
如果我使用UNION ALL,它会按照我想要的顺序生成列表,但会有重复项。
我能够使用这种查询,还是我需要做另一种方式?
答
您可以在order by
子句中使用case语句。下面是这样做的SQL标准方式:
select *
from songs
where song like '%st%'
order by (case when song like 'st%' then 1 else 0 end) desc,
song
在MySQL中,你可以使用表达式:
order by (song like 'st%') desc, song
因为布尔表达式为0(假)或1(真)。 desc
将首先放置比赛。
顺便说一句,你不能取决于union
或union all
后的排序。 SQL表本质上是无序的。除非使用order by
子句(或MySQL中的group by
子句)明确订购,否则SQL结果集本身是无序的。
答
您可以执行查询来搜索数据库中这些元素的相似度,并将它们分配给该变量,您可以使用相应的代码对它们进行分类。
这很明显。我的问题是看看是否可以在sql查询中完成。 – Simon 2013-05-11 18:53:27