zoukankan      html  css  js  c++  java
  • 查询出每个类型的前3个

    这还是城主提出的问题,感觉很有意思,
    比如一个记录表products,里面有个主键id,一个类型TYPEID,就是查询出每个TYPEID的前3个记录,还有一个类型表productstype

    可是我sql还是太菜。还是请假了夕颜兄
    夕颜还是使用sql自拼接来解决这个问题。

    DECLARE @SQL VARCHAR(8000)
    SET @SQL=''
    SELECT @SQL=@SQL+'SELECT TOP 3 distinct typeid FROM PRODUCTS WHERE TYPEID = '''+CAST(ISNULL(TYPEID,'') AS VARCHAR)+''' UNION ' FROM PRODUCTTYPE
    SET @SQL=SUBSTRING(@SQL,0,LEN(@SQL)-4)+'ORDER BY TYPEID'
    PRINT @SQL
    EXEC(@SQL)

    或者
    DECLARE @SQL VARCHAR(8000)
    SET @SQL=''
    SELECT @SQL=@SQL+'SELECT TOP 5 * FROM PRODUCTS WHERE TYPEID = '''+CAST(TYPEID AS VARCHAR)+''' UNION '
    FROM (SELECT DISTINCT TypeID FROM Products) t
    SET @SQL=SUBSTRING(@SQL,0,LEN(@SQL)-4)+'ORDER BY TYPEID'
    PRINT @SQL
    EXEC(@SQL)

    他们效果是等同的。
    使用这样的方法可以解决问题,也比较灵活了。但是夕颜说这个是下下策,因为sql类型的长度不好确定。

    应该还有其他好的方法,哪位仁兄提供一个吧

    本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

  • 相关阅读:
    毕业设计一周一记04
    毕业设计一周一记03
    毕业设计一周一记02
    毕业设计一周一记01
    课后作业
    大道至简第7,8章读后感
    课后作业和动手动脑
    大道至简-从编程到过程读后感
    数组求和与课后作业
    大道至简——失败的过程也是过程读后感
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319450.html
Copyright © 2011-2022 走看看