Table1과 관련하여 Table1과 Table2가 있습니다. 주어진 Table1.ID에 대해 0 개 이상의 Table2 레코드가있을 수 있습니다. Table2.ID 주어진 Table1.ID 최대 인 Table2.Value 가져 오려는보기가 있습니다. 친구는 파생 테이블을 제안했으나 from 절에 하위 쿼리가 필요하며 MySQL은이를 좋아하지 않습니다. 이 작업을 수행 할 수있는 다른 방법이 있습니까? 하위 쿼리 대신 보조 뷰를 설정하려고했지만 매우 느립니다. 나는 또한 having 절을 사용하여 Table2.ID = MAX (Table2.ID)를 시험해 보았지만 그룹에 넣지 않으면 열을 인식하지 못한다.MySql보기 - 다른 열이 최대 인 한 열의 값
답변
SELECT t1.*, t2a.*
FROM Table1 t1
LEFT JOIN Table2 t2a
ON (t1.table1_id = t2a.table1_id)
LEFT JOIN Table2 t2b
ON (t1.table1_id = t2b.table1_id AND t2a.table2_id < t2b.table2_id)
WHERE t2b.table2_id IS NULL
AND t1.table1_id = ?;
대단한 작품! 보조보기보다 훨씬 빠릅니다. 감사. 이 방법으로주의해야 할 성능 문제는 무엇입니까? 테이블 크기 또는 색인 또는 아무것도에 관해서는? –
글쎄, 당신은 항상 좋은 성능을 필요로하는 모든 쿼리를 EXPLAIN을 사용하여 분석해야하며, 인덱스를 잘 사용하고 있는지, 파일롯/임시 테이블을 사용하지 않는지 확인하십시오. 그러나이 쿼리는 정규화 된 데이터베이스에서 얻을 수있는만큼 확장 가능합니다. –
좋은 소리. 도움에 다시 한번 감사드립니다. –
- 1. 열의 최대 값 얻기
- 2. 테이블의 한 열의 값 검색
- 3. mysql에서 계산 된 열의 최대 값 선택
- 4. 한 열이 다른 열의 하위 문자열 인 행을 찾는 sql 쿼리를 작성하는 방법
- 5. MySQL - 열이 null 인 경우 다른 테이블에서 값 검색
- 6. 찾는 최대 열이 VARCHAR
- 7. MySQL의 한 열이 다른 열입니까?
- 8. 테이블 스캔없이 ID 열의 최대 값 가져 오기
- 9. mysql보기
- 10. 고유 한 값을 열로 사용하여 MySQL보기 만들기
- 11. 다른 열 값을 기준으로 한 열의 값 선택
- 12. SQL Server 2005에서 ID 열의 최대 값 설정
- 13. Datagridview 확인란 열의 값
- 14. ntext 열의 값 수정
- 15. 최대 절전 모드 = 열이
- 16. Excel : 열의 값 찾기
- 17. SQL에서 열의 값 개수를 계산 한 다음 피벗하여 열이 행이되도록하려면 어떻게해야합니까?
- 18. MySQL보기 성능
- 19. QGridLayout에서 열의 최대 너비 찾기
- 20. 창 최대 최대 값
- 21. 열이 varchar 일 때 mysql에서 최대 값 찾기
- 22. 열이 null인지 여부 (부울 값)
- 23. 열의 값 계산
- 24. 다른 (?) 문자 인코딩을 사용하는 테이블로 구성된 MySQL보기
- 25. MDX : 열의 차원 값 사용
- 26. 정보 열의 최대 열 수
- 27. C# DataView RowFilter, DateTime 열의 null 값
- 28. 열의 값 계산
- 29. 최대 값 하나의 열이 다른 열로 그룹화 된 행을 반환하는 방법은 무엇입니까?
- 30. 최대 절전 모드에서 열의 수를 줄이십시오.
사용중인 MySQL 버전은 무엇입니까? 5.x를 사용하는 경우 서브 쿼리를 사용하면됩니다. – Wade
v5.0을 사용 중입니다. 내가 읽은 문서와 오류는 from 절의 하위 쿼리가 뷰에서 허용되지 않음을 나타냅니다. 5.0에 불과합니까? –
MySQL의 공개 버그 : http://bugs.mysql.com/bug.php?id=12755 –