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 所有列而没有任何不必要的复杂性。
我知道如何找到列中最长字符串的长度以及如何 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 所有列而没有任何不必要的复杂性。