将SQL计数(*)与别名列一起使用

将SQL计数(*)与别名列一起使用,sql,data.stackexchange.com,Sql,Data.stackexchange.com,嗨,我想用它从我的国家获得金牌。我的问题是 SELECT TOP 1000 ROW_NUMBER() OVER(ORDER BY Gold badges DESC) AS [#], UserId AS [User Link], COUNT(*) AS "Gold badges" FROM Badges, Users WHERE Name IN ('Copy Editor', 'Electorate', 'Famous Question', 'Fanatic', 'Great An

嗨,我想用它从我的国家获得金牌。我的问题是

SELECT TOP 1000
  ROW_NUMBER() OVER(ORDER BY Gold badges DESC) AS [#], 
  UserId AS [User Link], 
  COUNT(*) AS "Gold badges"
FROM Badges, Users
WHERE Name IN ('Copy Editor', 'Electorate', 'Famous Question', 'Fanatic', 'Great Answer', 'Great Question', 'Legendary', 'Marshal', 'Populist', 'Publicist', 'Reversal', 'Stellar Question', 'Steward', 'Unsung Hero')
AND LOWER(Location) LIKE '%sri lanka%' AND Users.Id = Badges.UserId
GROUP BY UserId
ORDER BY COUNT(*) DESC
我需要做的是让所有国家的金牌获得者都有金牌数量名称和行号。但我得到了这个错误

关键字“DESC”附近的语法不正确


如果有人能帮忙,那就太好了。

我想你想要这样的东西:

SELECT TOP 1000
       ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS [#], 
       u.id AS User_Link, 
       COUNT(*) AS Gold_badges
FROM Badges b JOIN
     Users u
     ON u.Id = b.UserId
WHERE ?.Name IN ('Copy Editor', 'Electorate', 'Famous Question', 'Fanatic', 'Great Answer', 'Great Question', 'Legendary', 'Marshal', 'Populist', 'Publicist', 'Reversal', 'Stellar Question', 'Steward', 'Unsung Hero'
                ) AND
     LOWER(?.Location) LIKE '%sri lanka%' AND 
GROUP BY u.id
ORDER BY COUNT(*) DESC;
注:

  • 用于标识列来源的表别名
  • 切勿在
    FROM
    子句中使用逗号
  • 这修复了连接语法,以使用正确、明确、标准的连接
  • 不能在同一个
    SELECT
    中的任何其他位置使用表别名。所以,重复这个表达式

    • 我想你想要这样的东西:

      SELECT TOP 1000
             ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS [#], 
             u.id AS User_Link, 
             COUNT(*) AS Gold_badges
      FROM Badges b JOIN
           Users u
           ON u.Id = b.UserId
      WHERE ?.Name IN ('Copy Editor', 'Electorate', 'Famous Question', 'Fanatic', 'Great Answer', 'Great Question', 'Legendary', 'Marshal', 'Populist', 'Publicist', 'Reversal', 'Stellar Question', 'Steward', 'Unsung Hero'
                      ) AND
           LOWER(?.Location) LIKE '%sri lanka%' AND 
      GROUP BY u.id
      ORDER BY COUNT(*) DESC;
      
      注:

      • 用于标识列来源的表别名
      • 切勿在
        FROM
        子句中使用逗号
      • 这修复了连接语法,以使用正确、明确、标准的连接
      • 不能在同一个
        SELECT
        中的任何其他位置使用表别名。所以,重复这个表达式

      非常感谢您的知识,兄弟。但不幸的是,我得到了这个错误“附近的语法不正确”?“@vimuth。正如回答中所解释的,您需要将其替换为列来源表的别名,
      b
      用于
      徽章
      u
      用于
      用户
      。抱歉,兄弟会非常感谢所有的知识。但不幸的是,我得到了这个错误“附近的语法不正确”?“@vimuth。正如回答中所解释的,您需要将其替换为列来源表的别名,
      b
      用于
      徽章
      u
      用于
      用户
      。很抱歉,bro会这样做