3
좋아, 내 MySQL 서버 중 하나에서 이상한 쿼리 동작을보고 있습니다. 세 가지 다른 서버에서 다음 데이터를 모두 동일한 데이터로 실행했습니다.mysql 이상한 쿼리 동작
SELECT t1.Field1, t1.Field2, t1.Field3,
(SELECT t2.Field1
FROM thetable AS t2
WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1
ORDER BY Field1
LIMIT 1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;
SELECT t1.Field1, t1.Field2, t1.Field3,
(SELECT min(t2.Field1)
FROM thetable AS t2
WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;
세 서버 중 두 서버에서 두 쿼리가 동일한 결과를 반환합니다. 셋째, MinimumResult 필드에 대해 두 가지 결과를 얻습니다. 첫 번째 쿼리는 작은 숫자를 반환합니다. 두 번째 쿼리는 내가 기대하는 것과 두 쿼리가 다른 서버에서 리턴하는 것을 리턴합니다.
어떻게 대응해야할지 모르겠습니까? 이것은 서버 구성 문제입니까 아니면 예상되는 동작입니까?
제공 할 수있는 도움에 미리 감사드립니다.
시험 예제처럼 작동하는 데이터 집합을 사용하여 하위 쿼리를 실행 해 봅니다. 필자는 그 방향으로 colation 또는 someting에 문제가 있다고 생각합니다. 그것의 외관에서 하위 쿼리의 순서가 당신의 기대에 작동하지 않습니다. – Jester
예, 시도했습니다. 하위 쿼리는 자체적으로 실행하면 정상적으로 작동합니다. 세 데이터베이스 모두에서 테이블의 데이터 정렬 및 저장 엔진이 일치합니다. 도움이된다면, mysqldump가 그들을 내보내기 위해 사용되었고, 생성 된 스크립트를 통해로드되었다. – dalto
UserID 5가 모든 데이터베이스에서 동일한 레코드를 가리키고 있습니까? – Limey