我知道如何找到列中最长字符串的长度以及如何选择它。但我无法弄清楚如何查询所有列
我在W3School的SQL控制台中试过这个
SELECT *, MAX(LEN(Address)) as MaxLengthOfAddress
FROM Customers;
我收到此错误消息
无法对使用'*'选择的字段进行分组。
但是,如果我只是获得最大地址长度,它就可以工作
SELECT MAX(LEN(Address)) as MaxLengthOfAddress
FROM Customers;
我使用了通配符运算符*
,因为除了这个最大长度列之外,我想获得每一列。我不确定为什么这不起作用。
答案 0 :(得分:2)
您需要找到MAX(LEN(Address))
,然后使用它来查找地址为该长度的记录。如,
SELECT *
FROM Customers
WHERE LEN(Address) = ( SELECT MAX(LEN(Address))
FROM Customers );
您没有使用特定的RDBMS标记您的问题,但根据您使用的内容,可以肯定的是,有更有效的方法可以做到这一点。但我希望这说明了基本概念。
答案 1 :(得分:1)
你的where子句中需要一个子查询。 试试这样:
SELECT *
FROM Customers
WHERE LEN(Adress) >= (SELECT MAX(LEN(Address))
FROM Customers
)
;
答案 2 :(得分:1)
你可以这样做:
SELECT TOP 1 C.*
FROM Customers C
ORDER BY LEN(Address) desc
订单确保顶部选择将具有最大地址长度,而使用TOP允许您选择所有列而没有任何不必要的复杂性。