或许我的表述有些模糊,下面我详细说说,例如表结构如下:
Table1(ID,a,a_Extra,b,c,d,e)
而我目前的关键字是k
我要取出rs(a)=k的放在前面,加上rs(a_Extra)包含k的放在后面
就是类似于一个多字段的搜索,但由于条件一是精准匹配,所以比条件二优先。
但是不能做成两个语句先后执行,否则会出现大量重复条目。
也不能先把数据以两个语句取出,然后程序去重,因为数量庞大甚至到要分页的程度。各位达人有没有点子呢?
Table1(ID,a,a_Extra,b,c,d,e)
而我目前的关键字是k
我要取出rs(a)=k的放在前面,加上rs(a_Extra)包含k的放在后面
就是类似于一个多字段的搜索,但由于条件一是精准匹配,所以比条件二优先。
但是不能做成两个语句先后执行,否则会出现大量重复条目。
也不能先把数据以两个语句取出,然后程序去重,因为数量庞大甚至到要分页的程度。各位达人有没有点子呢?
解决方案 »
- 一道SQL的笔试题目,大家一起提供思路
- C++和MYSQL的多SQL语句问题
- auto_increment_offset > auto_increment_increment 时会怎么样?
- 求学一条命令
- 如何往新建的mysql里导入mysql数据库备份sql文件?
- 有什么命令可以将数据转移到远程服务器?
- 求EMS mysql manager2.6.0.1注册码!
- 救助,jsp 访问 MySQL, org.apache.jasper.JasperException
- MYSQL字符集的问题
- 如何查询所有记录是否满足条件?
- mysql中的collation什么意思 其中的utf8-bin
- mysql的一些疑问?
也就是说取出符合条件一的数据、符合条件二的数据、符合条件三的数据,并且把符合条件一的排在最前面、符合条件二的紧接、最后是符合条件三的数据(而不是把它们混合在一起按某字段排序),并且去除其中重复的数据。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
可是我这个问题不是个具体的问题,而是个抽象的问题。并且也不涉及任何的开发环境,也就是说用的是通用SQL语法。说白了,这是个语法层面的问题。
至于表结构,我已经在前面说明了Table1(ID,a,a_Extra,b,c,d,e)
我就拿百度音乐举个例子吧,假设表内容是(虚构的)
ID 歌名 歌手 专辑名 歌词
1 一辈子 无名 一辈子爱你 ……………………
2 某首歌 某个人 某张专辑 ……………………
3 朋友 周华健 朋友 ……一辈子一生情一杯酒……
4 一辈子 佚名 我的专辑 ……………………
5 我的歌 某人 我这一辈子 ……………………
期待搜索sql("一辈子")返回的数据如下
ID 歌名 歌手 专辑名 歌词
1 一辈子 无名 一辈子爱你 ……………………
4 一辈子 佚名 我的专辑 ……………………
5 我的歌 某人 我这一辈子 ……………………
3 朋友 周华健 朋友 ……一辈子一生情一杯酒……
ID=1和ID=4由于满足条件一:rs(歌名)="一辈子"排在最前面
ID=5由于满足条件二:rs(专辑)包含"一辈子"紧跟其后(同样满足本条件的ID=1由于去重而去除掉了)
ID=3由于满足条件三:rs(歌词)包含"一辈子"跟在更后面
而ID=2不符合任何一个条件,将不出现在返回数据里