programing

mysql의 max(길이(필드))

bestcode 2022. 11. 8. 21:48
반응형

mysql의 max(길이(필드))

내가 말한다면:

select max(length(Name)) 
  from my_table

결과는 18로 나오지만, 관련된 데이터도 원합니다.그래서 내가 말한다면:

select max(length(Name)), 
       Name 
  from my_table

...그것은 효과가 없다.내가 알 수 없는 셀프 가입이 있을 것 같아.

누가 힌트 좀 주실 수 있나요?

SELECT  name, LENGTH(name) AS mlen
FROM    mytable
ORDER BY
        mlen DESC
LIMIT 1

편집 완료, 알 수 없는 max() 값에 대해 동작합니다.

select name, length( name )
from my_table
where length( name ) = ( select max( length( name ) ) from my_table );

네, 무엇을 사용하고 있는지 잘 모르겠습니다(MySQL, SLQ Server, Oracle, MS Access).하지만 아래 코드를 사용해 보세요.W3 School 예제 DB에서 작동합니다.이것을 시험해 보세요.

SELECT city, max(length(city)) FROM Customers;

같은 테이블에서 max와 min이 모두 필요한 경우:

    select * from (
(select city, length(city) as maxlen from station
order by maxlen desc limit 1)
union
(select city, length(city) as minlen from station
order by minlen,city limit 1))a;

용도:

  SELECT mt.name 
    FROM MY_TABLE mt
GROUP BY mt.name
  HAVING MAX(LENGTH(mt.name)) = 18

...길이를 미리 알고 있어야 합니다.그렇지 않은 경우 다음을 사용합니다.

  SELECT mt.name 
    FROM MY_TABLE mt
    JOIN (SELECT MAX(LENGTH(x.name) AS max_length
            FROM MY_TABLE x) y ON y.max_length = LENGTH(mt.name)
Select URColumnName From URTableName Where length(URColumnName ) IN 
(Select max(length(URColumnName)) From URTableName);

그러면 최대 길이를 가진 특정 열의 레코드가 표시됩니다.

MySQL - length() vs char_length()에서 제시된 바와 같이 LENgth() 대신 CHAR_LENGH()를 사용합니다.

mytable ORDER에서 이름, CHAR_LENGH(이름) AS mlen을 설명 제한 1로 선택합니다.

select * 
from my_table 
where length( Name ) = ( 
      select max( length( Name ) ) 
      from my_table
      limit 1 
);

이것은 2개의 테이블스캔을 수반하기 때문에 매우 빠르지 않을 수 있습니다!

다음과 같은 솔루션을 사용할 수 있을 것 같습니다.

select name, length(name)
from users
where id = (
    select id
    from users
    order by length(name) desc
    limit 1
);

최선의 해결책은 아닐 수도 있지만...하지만 효과가 있는 것 같아.

언급URL : https://stackoverflow.com/questions/2357620/maxlengthfield-in-mysql

반응형