SQL GROUP BY 子句:别名限制
在 SQL GROUP BY
子句中使用别名提供了便利,但了解它们的局限性至关重要。 以下查询说明了一个常见问题:
<code class="language-sql">SELECT itemName as ItemName, substring(itemName, 1,1) as FirstLetter, Count(itemName) FROM table1 GROUP BY itemName, FirstLetter</code>
此查询失败,因为 FirstLetter
是 only 在 SELECT
子句中定义的别名。 数据库在GROUP BY
子句之前处理 子句;因此,SELECT
尚未被识别。 正确的查询需要使用原始表达式:FirstLetter
<code class="language-sql">GROUP BY itemName, substring(itemName, 1,1)</code>
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
子句中使用之前定义。GROUP BY
子句中使用别名。 但是,如果您的代码需要跨不同的数据库系统运行,依赖此行为可能会导致可移植性问题。 为了获得最大兼容性,最佳实践是避免在 GROUP BY
子句中使用别名,而是使用原始列名称或表达式。GROUP BY
以上是为什么某些 SQL 数据库的 GROUP BY 子句不能使用别名?的详细内容。更多信息请关注PHP中文网其他相关文章!