【问题标题】:Use SQL count(*) with an alias column将 SQL count(*) 与别名列一起使用
【发布时间】:2019-04-21 23:21:53
【问题描述】:

您好,我正在尝试使用 https://data.stackexchange.com/stackoverflow/query/new 从我的国家获得堆栈溢出金牌得主。这是我的查询,

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”附近的语法不正确。

如果有人能帮忙就好了。

【问题讨论】:

    标签: sql data.stackexchange.com


    【解决方案1】:

    我想你想要这样的东西:

    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 。 . .如答案中所述,您需要将其替换为该列来自的表的别名,bbadgesuusers
    • 对不起兄弟会做的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多