SELECT emplname, LENGTH(emplname) AS name_length
FROM employeesinfo
WHERE LENGTH(emplname) = (SELECT MAX(LENGTH(emplname)) FROM employeesinfo);
另一种通用的方法是使用 RANK 分析函数:
WITH cte AS (
SELECT emplname, LENGTH(emplname) AS name_length,
RANK() OVER (ORDER BY LENGTH(emplname) DESC) rnk
FROM employeesinfo
)
SELECT emplname, name_length
FROM cte
WHERE rnk = 1;
如果您只需要一个最大长度的记录,那么在mysql上我们可以使用 LIMIT :
SELECT emplname, LENGTH(emplname) AS name_length
FROM employeesinfo
ORDER BY LENGTH(emplname) DESC
LIMIT 1;
2条答案
按热度按时间irlmq6kh1#
我将你的语法改为:
另一种通用的方法是使用
RANK
分析函数:如果您只需要一个最大长度的记录,那么在mysql上我们可以使用
LIMIT
:svmlkihl2#
table
k
不引用此查询中的派生表:您可能会混淆子查询和CTE。如果您将其定义为cte,那么它将起作用:
我应该注意到也许有更好的方法来处理这个问题。例如,如果只需要一个最大值,则可以使用: