一句话SQL,希望大家喜欢。

fish21cn 2003-09-13 01:49:26
有这样一个表
Msg
Id Type Date
1 type1 2003-9-10
2 type1 2003-9-10
3 type2 2003-9-11
4 type1 2003-9-11
5 type2 2003-9-11
...
...
1000 type3 2003-9-11
现在我想通过Type字段分类,并且每类都取出规定条数的记录。
比如说:Type = type1的,Type = type2, Type = type3的分别取5条出来,该怎么写,一句话。
...全文
79 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fish21cn 2003-09-15
  • 打赏
  • 举报
回复
我看只有从应用层想办法,就算能用一句SQL写出来,性能也不会好的。
谢谢各位了。 结帖。
lxf_1976 2003-09-15
  • 打赏
  • 举报
回复
呵呵,是的!

如果要查询type的值太多,用union确实不太合适,而且我提到的那个缺陷出现的机率更大了!那就建议在应用层多想想更好的办法吧!
weizhihui1213 2003-09-15
  • 打赏
  • 举报
回复
关注
fish21cn 2003-09-14
  • 打赏
  • 举报
回复
To lxf_1976(小木),如果type不只是type1, type2, type3,那上面的语句就不会适用。 我想这个问题可能只有用多个查询来处理。 嵌套处理不了吧。
shuixin13 2003-09-13
  • 打赏
  • 举报
回复
可以用 UNION 的
buffalo 2003-09-13
  • 打赏
  • 举报
回复
用union !!!不过不知道mysql有没有???sqlserver就没问题
heavenmusic 2003-09-13
  • 打赏
  • 举报
回复
我知道,你需要的一个SQL的欠套..... 把同类的理出来....你索引TYPE,关键字就好了..

具体怎么写,我不会!!
jxbicestare 2003-09-13
  • 打赏
  • 举报
回复
请高人指点
fish21cn 2003-09-13
  • 打赏
  • 举报
回复
To jxbicestare(香波):这只能取出一个类型的规定数量的语句。
jxbicestare 2003-09-13
  • 打赏
  • 举报
回复
SELECT * FROM Msg WHERE Type=type1 LIMIT 5

取出规定条数请查看LIMIT 用法
ezhou 2003-09-13
  • 打赏
  • 举报
回复
小木讲的真好。
lxf_1976 2003-09-13
  • 打赏
  • 举报
回复
使用UNION方法,不过需要Mysql4.0版本以上!例如:

select * from msg where type='type1' limit 5 union select * from msg wher
e type='type2' limit 5 union select * from msg where type='type3' limit 15;

比较怪异的是,各union子语句中除了最后一个子语句外,limit限定的都是数字5,但最后一条必须是想取得的记录数的总和!

其中5可以换成任何你想要得数字,每个union子语句的这个数字可以不同,但最后一个limit的数字必须是总和!

缺陷:如果某个union子语句满足条件的记录不足指定的数字时,这个子语句之后的union子语句的结果会不正确!

请楼主试试吧!
alamb 2003-09-13
  • 打赏
  • 举报
回复
如果type的值不定或数量较多,用union没法解决这个问题,楼主只能用两个以上查询来实现这个功能了。
fish21cn 2003-09-13
  • 打赏
  • 举报
回复
哦,数据库是MYSQL.

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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