SQL - 如何select字段中最长字符串名称的所有列

SQL - How to select all columns of the field with the longest string name

我知道如何找到列中最长字符串的长度以及如何 select 它。但我想不通的是如何查询所有列

我在 W3School 的 SQL 控制台中试过这个

SELECT *, MAX(LEN(Address)) as MaxLengthOfAddress
FROM Customers;

我收到此错误消息

Cannot group on fields selected with '*'.

但是,如果我自己获得最大地址长度,它就可以工作

SELECT MAX(LEN(Address)) as MaxLengthOfAddress
FROM Customers;

我使用了通配符 * 因为我想获取除了这个最大长度列之外的每一列。我不确定为什么这不起作用。

您需要找到 MAX(LEN(Address)),然后使用它来查找具有该长度地址的记录。例如,

SELECT * 
FROM   Customers
WHERE  LEN(Address) = ( SELECT MAX(LEN(Address))
                        FROM   Customers );

您没有使用特定的 RDBMS 标记您的问题,但根据您使用的是什么,可以肯定的是,有更有效的方法来做到这一点。但我希望这能说明基本概念。

您的 where 子句中需要一个子查询。 像这样尝试:

SELECT *
  FROM Customers
 WHERE LEN(Adress) >= (SELECT MAX(LEN(Address))
                         FROM Customers
                      )
;

你可以这样做:

SELECT TOP 1 C.*
FROM         Customers C
ORDER BY     LEN(Address) desc

order by 确保顶部 selection 将具有最大地址长度,而使用 TOP 允许您 select 所有列而没有任何不必要的复杂性。