programing

where 절 mysql에서 MAX 함수

itmemos 2023. 9. 14. 21:44
반응형

where 절 mysql에서 MAX 함수

max() function을 mysql 쿼리의 where 절에서 사용하려면 어떻게 해야 합니다.

 select firstName,Lastname,MAX(id) as max where id=max;

이것은 나에게 오류를 주고 있습니다.

'where 절'의 알 수 없는 열 'max'

집계 함수의 결과를 참조할 수 없습니다(예:MAX())에WHERE동조항SELECT.

이러한 유형의 문제를 해결하기 위한 표준 패턴은 다음과 같은 인라인 뷰를 사용하는 것입니다.

SELECT t.firstName
     , t.Lastname
     , t.id
  FROM mytable t
  JOIN ( SELECT MAX(mx.id) AS max_id
           FROM mytable mx
       ) m
    ON m.max_id = t.id

이 방법은 지정된 결과를 얻을 수 있는 한 가지 방법일 뿐입니다.동일한 결과를 얻기 위한 몇 가지 다른 접근법이 있으며, 그 중 일부는 다른 접근법보다 훨씬 효율적이지 않을 수 있습니다.다른 답변은 다음과 같은 접근 방식을 보여줍니다.

 WHERE t.id = (SELECT MAX(id) FROM ... )

때때로 가장 간단한 접근법은 LIMIT와 함께 ORDER BY를 사용하는 것입니다. (이 구문은 MySQL에 고유합니다.)

SELECT t.firstName
     , t.Lastname
     , t.id
  FROM mytable t
 ORDER BY t.id DESC
 LIMIT 1

이 경우 하나의 행만 반환되므로 동일한 ID 값을 가진 행이 두 개 이상 있으면 모두 반환되지 않습니다. (첫 번째 쿼리에서는 동일한 ID 값을 가진 모든 행이 반환됩니다.)

이 접근법은 하나 이상의 행을 얻도록 확장될 수 있으며, ID 값이 가장 높은 5개의 행을 다음과 같이 변경하여 얻을 수 있습니다.LIMIT 5.

이 접근 방식의 성능은 특히 사용 가능한 적합한 지수(즉, 다음과 같이)에 따라 달라집니다.idPrimary KEY(기본 키) 또는 다른 인덱스의 선두 열로 표시됩니다.)적합한 인덱스는 이러한 모든 접근 방식을 사용하여 쿼리의 성능을 향상시킬 것입니다.

하위 선택 항목 사용:

SELECT row  FROM table  WHERE id=(
    SELECT max(id) FROM table
)

참고: ID는 고유해야 하며, 그렇지 않으면 여러 행이 반환됩니다.

일부 Mysql 버전에서는 하위 선택 항목 내부에 'limit'이 허용되지 않습니다.당신(그리고 미래의 나)에 대한 나의 대답은 그룹을 사용하는 것입니다.

select firstName,Lastname,id 
where {whatever}
group by id
having max(id)

그러면 Aggregate 필드 없이 선택한 영역에서 원하는 것을 반환할 수 있습니다.

SELECT firstName, Lastname, MAX(id) as max WHERE YOUR_CONDITIONS_HERE HAVING id=max(id) 

ID가 가장 큰 행의 이름과 성을 원하십니까?

그렇다면 (그리고 FROM 조항이 누락되었습니다):

SELECT firstname, lastname, id
FROM foo
ORDER BY id DESC
LIMIT 1;

사용한 구문이 올바르지 않습니다.쿼리는 다음과 같아야 합니다.

SELECT column_name(s) FROM tablename WHERE id = (SELECT MAX(id) FROM tablename)

이 쿼리를 사용하면 원하는 데이터를 반환할 수 있습니다.foo를 사용 중인 테이블 이름으로 대체합니다.

SQL 쿼리:

select firstName,Lastname, id 
from foo 
having max(id) = id 

열의 별칭으로 'max'라는 단어를 사용하고 있습니다.시도:

MAX(id) as mymax ... WHERE ID - mymax

언급URL : https://stackoverflow.com/questions/22538287/max-function-in-where-clause-mysql

반응형