• 查询出每个类型的前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注册。

  • 相关阅读:
    杂项
    导出查询数据(大数据量)
    设置现有字段自增
    C++ 矩形交集和并集的面积-离散化
    Python使用flask架构、跨域
    匈牙利命名法
    C++ main函数
    windows编译boost
    mfc HackerTools监控键盘按键
    mfc HackerTools远程线程注入
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319450.html
Copyright © 2020-2023  润新知