FOUND_ROWS가 있는 SQL_CALC_FOUND_ROWS는 항상 1을 반환합니다.
select SQL_CALC_FOUND_ROWS, col1 , mytable.id from mytable group by col1;
select found_rows();
select found_rows() , col1 , mytable.id from mytable group by col1;
위의 쿼리는 검색된 행에 대해 항상 1이 됩니다.php 7.1과 maria db 10.1을 사용하고 있습니다.
제 백엔드는 5.5로 mysql에 DB::raw 요청을 하고 있습니다.서버 아파치 램프 서버.
버그인가요? 아니면 다른 방법이 있나요?
해결책 1:
mysql 버전을 확인해 주세요.이 오류는 5.6.*에 존재하며 5.6.11 릴리스로 해결되었습니다.이것을 실행하려면 , 서버의 버전이 [5.6.*< 5.6.11 ]와 다른 것을 확인합니다.
이것은 mariadb가 아닌 mysql에 게재된 버그입니다.http://bugs.mysql.com/bug.php?id=68458
mysql 버전을 확인한 경우 다음 설명을 확인하십시오.
메모: 버그 링크에 "5.6.11-log Source distribution"에서 컴파일된 MySQL 서버에 아직 이 오류가 있다고 기재되어 있습니다.
해결책 2:
found_rows() 및 동일한 쿼리의 limit은 총 카운트를 산출하지 않지만 제한이 있는 데이터에 대한 카운트를 제공합니다.선택 쿼리에 제한이 있는 경우 다음을 사용해야 합니다.
"select SQL_CALC_FOUND_ROWS, ....... limit x;"
즉시 다음 실행
"select found_rows();"
또는
선택문에 제한이 없는 경우 직접 실행할 수 있습니다.
"select found_rows(), .......;"
설명: https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_found-rows
예제 쿼리는 잘못된 것 같습니다. col1을 선택한 필드의 일부로 만들어야 합니다.
found_rows는 이전 쿼리에서 발견된 행 수를 반환합니다.첫 번째 문의 결과는 확인하셨나요?몇 개의 행을 반환합니까?1개 이상의 행을 반환하는 경우 - 쿼리와 같은 세션에서 found_rows()를 선택하는 사이에 쿼리가 실행되고 있음을 의미합니다.저는 이 문제를 재현하지 못했습니다만, 여기서 거래해 보세요.
다른 쪽에는 -
쿼리에서는 테이블에서 다른 카운트를 얻으려고 하는데 어떤 이유로 그룹을 사용하고 있는 것 같습니다.
사용해보셨습니까?
select count( disctinct col1) from mytable
이 방법으로 문제가 해결되지 않는 경우, 차선책은 다음과 같습니다.
select count(1) from (<your query goes here>)
언급URL : https://stackoverflow.com/questions/47407046/sql-calc-found-rows-with-found-rows-always-returns-1
'source' 카테고리의 다른 글
판다의 열을 regex로 필터링하는 방법 (0) | 2022.11.25 |
---|---|
Java에서의 HTTP POST 요구 전송 (0) | 2022.11.25 |
Test Containers Framework가 도커 deamon에 연결할 수 없습니다. (0) | 2022.11.25 |
술어와 일치하는 시퀀스에서 첫 번째 요소 찾기 (0) | 2022.11.25 |
Java: Python의 범위(int, int)와 동등합니까? (0) | 2022.11.25 |