代码之家  ›  专栏  ›  技术社区  ›  Cunners

如何将此SQL查询联接到另一个表?

  •  1
  • Cunners  · 技术社区  · 16 年前

    我有下面的SQL查询,到目前为止,它的工作方式应该是这样的,并且得到了我存储在Tagmap表中的前40个标记ID。

    SELECT TOP 40
    tbrm_TagMap.TagID,
    Count(*)
    FROM tbrm_TagMap
    GROUP BY tbrm_TagMap.TagID
    ORDER BY COUNT(tbrm_TagMap.TagID) DESC
    

    我还想加入包含每个tagid的实际名称的tags表。每次尝试都会出错。我怎样才能做到这一点?我正在使用SQL 2008。

    4 回复  |  直到 16 年前
        1
  •  5
  •   Quassnoi    16 年前
    SELECT  *
    FROM    (
            SELECT  TOP 40 
                    tbrm_TagMap.TagID, COUNT(*) AS cnt
            FROM    tbrm_TagMap
            GROUP BY
                    tbrm_TagMap.TagID
            ORDER BY
                    COUNT(*) DESC
            ) q
    JOIN    Tags
    ON      Tags.id = q.TagID
    ORDER BY
            cnt DESC
    
        2
  •  1
  •   Eric    16 年前

    我猜你加入的时候 tags ,你没有把它包括在 group by 子句,它将始终通过SQL Server中的错误。未聚合但返回的每个列都需要位于 小组通过 .

    尝试如下操作:

    SELECT TOP 40
        tbrm_TagMap.TagID,
        t.Tag,
        Count(*)
    FROM 
        tbrm_TagMap
        INNER JOIN tags t ON
            tbrm_TagMap.TagID = t.TagID
    GROUP BY 
        tbrm_TagMap.TagID, 
        t.Tag
    ORDER BY 3 DESC
    
        3
  •  1
  •   Paul McLean    16 年前
    SELECT TOP 40
    tbrm_TagMap.TagID, Tags.TagName Count(*)
    FROM tbrm_TagMap INNER JOIN Tags ON tbrm_TagMap.TagID = Tags.TagID
    GROUP BY tbrm_TagMap.TagID, Tags.TagName
    ORDER BY COUNT(tbrm_TagMap.TagID) DESC
    
        4
  •  1
  •   Raj More    16 年前

    试试这个…

    SELECT top 40 tags.TagDescription, tbrm_TagMap.TagID, Count(*)
    FROM tbrm_TagMap
        INNER JOIN Tags 
           ON TagMap.TagID = Tags.TagId
    GROUP BY tags.TagDescription, tbrm_TagMap.TagID
    ORDER BY COUNT(tbrm_TagMap.TagID) DESC
    
    推荐文章