Sql server SQL查询和别名问题
有人能告诉我为什么这是抱怨吗? 我使用的是SQL Server,其中一个表名为test,一个列名为word 这是我的疑问:Sql server SQL查询和别名问题,sql-server,Sql Server,有人能告诉我为什么这是抱怨吗? 我使用的是SQL Server,其中一个表名为test,一个列名为word 这是我的疑问: SELECT TOP 1 COUNT(*) AS count, (LEN(word) - LEN(REPLACE(word,'A',''))) AS letters FROM dbo.TEST WHERE word LIKE '******' GROUP BY letters ORDER BY count DESC 这是结果错误: Msg 207, Level
SELECT TOP 1
COUNT(*) AS count,
(LEN(word) - LEN(REPLACE(word,'A',''))) AS letters
FROM dbo.TEST
WHERE
word LIKE '******'
GROUP BY letters
ORDER BY count DESC
这是结果错误:
Msg 207, Level 16, State 1, Line 7
Invalid column name 'letters'.
为什么抱怨我的别名?您不能在组中使用别名,请使用相同的计算列:
SELECT TOP 1
COUNT(*) AS count,
(LEN(word) - LEN(REPLACE(word,'A',''))) AS letters
FROM dbo.TEST
WHERE
word LIKE '******'
GROUP BY (LEN(word) - LEN(REPLACE(word,'A','')))
ORDER BY count DESC
不能在GROUP BY子句中使用别名。 这是由于SQL处理顺序,在选择之前先处理GROUP BY。 尝试替换:
GROUP BY letters
与
不能在查询中使用别名。您需要的是:
SELECT TOP 1
COUNT(*) AS count,
(LEN(word) - LEN(REPLACE(word,'A',''))) AS letters
FROM dbo.TEST
WHERE
word LIKE '******'
GROUP BY (LEN(word) - LEN(REPLACE(word,'A','')))
ORDER BY count DESC
希望这有助于在查询中更改组
SELECT TOP 1
COUNT(*) AS count ,
( LEN(word) - LEN(REPLACE(word, 'A', '')) ) AS letters
FROM dbo.TEST
WHERE word LIKE '******'
GROUP BY ( LEN(word) - LEN(REPLACE(word, 'A', '')) )
ORDER BY count DESC
看<代码>分组依据运行第五<代码>选择第八次运行。和“因为SELECT子句是步骤8,所以前面的子句不能引用该子句中定义的任何列别名或派生列”
SELECT TOP 1
COUNT(*) AS count ,
( LEN(word) - LEN(REPLACE(word, 'A', '')) ) AS letters
FROM dbo.TEST
WHERE word LIKE '******'
GROUP BY ( LEN(word) - LEN(REPLACE(word, 'A', '')) )
ORDER BY count DESC