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

时间:2021-10-17 20:04:37
有这样一个表
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条出来,该怎么写,一句话。

14 个解决方案

#1


哦,数据库是MYSQL.

#2


SELECT * FROM Msg WHERE Type=type1 LIMIT 5

取出规定条数请查看LIMIT 用法

#3


To jxbicestare(香波):这只能取出一个类型的规定数量的语句。

#4


请高人指点

#5


我知道,你需要的一个SQL的欠套.....  把同类的理出来....你索引TYPE,关键字就好了..

   具体怎么写,我不会!!

#6


用union !!!不过不知道mysql有没有???sqlserver就没问题

#7


可以用 UNION 的

#8


如果type的值不定或数量较多,用union没法解决这个问题,楼主只能用两个以上查询来实现这个功能了。

#9


使用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子语句的结果会不正确!

请楼主试试吧!

#10


小木讲的真好。

#11


To  lxf_1976(小木),如果type不只是type1, type2, type3,那上面的语句就不会适用。  我想这个问题可能只有用多个查询来处理。  嵌套处理不了吧。

#12


关注

#13


呵呵,是的!

如果要查询type的值太多,用union确实不太合适,而且我提到的那个缺陷出现的机率更大了!那就建议在应用层多想想更好的办法吧!

#14


我看只有从应用层想办法,就算能用一句SQL写出来,性能也不会好的。
谢谢各位了。 结帖。

#1


哦,数据库是MYSQL.

#2


SELECT * FROM Msg WHERE Type=type1 LIMIT 5

取出规定条数请查看LIMIT 用法

#3


To jxbicestare(香波):这只能取出一个类型的规定数量的语句。

#4


请高人指点

#5


我知道,你需要的一个SQL的欠套.....  把同类的理出来....你索引TYPE,关键字就好了..

   具体怎么写,我不会!!

#6


用union !!!不过不知道mysql有没有???sqlserver就没问题

#7


可以用 UNION 的

#8


如果type的值不定或数量较多,用union没法解决这个问题,楼主只能用两个以上查询来实现这个功能了。

#9


使用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子语句的结果会不正确!

请楼主试试吧!

#10


小木讲的真好。

#11


To  lxf_1976(小木),如果type不只是type1, type2, type3,那上面的语句就不会适用。  我想这个问题可能只有用多个查询来处理。  嵌套处理不了吧。

#12


关注

#13


呵呵,是的!

如果要查询type的值太多,用union确实不太合适,而且我提到的那个缺陷出现的机率更大了!那就建议在应用层多想想更好的办法吧!

#14


我看只有从应用层想办法,就算能用一句SQL写出来,性能也不会好的。
谢谢各位了。 结帖。