데이터베이스에 대한 테스트가 있는데 이상한 이유로 임의로 다른 결과 집합을 반환합니다. 흥미롭게도 수천 개의 행에서 반환하는 유일한 결과 집합은 두 가지 뿐이며 쿼리는 무작위로 하나를 반환하지만 다른 것은 반환하지 않습니다.MySQL의 이상한 쿼리 결과
쿼리가 두 데이터 집합 중 하나만 반환하는 이유가 있습니까? 아래 쿼리 및 스키마.
나의 목표는 주어진 시간 동안 주어진 트랙에 대해 가장 빠른 랩을 선택하는 것이지만, 각 사용자에 대해 가장 빠른 랩 만 사용하는 것입니다. 따라서 톱 10에는 항상 10 명의 다른 사용자가 있습니다.
대부분의 경우 올바른 결과가 반환되지만 무작위 적으로 완전히 다른 결과 집합이 반환됩니다.
SELECT `lap`.`ID`, `lap`.`qualificationTime`, `lap`.`userId`
FROM `lap`
WHERE (lap.trackID =4)
AND (lap.raceDateTime >= "2013-07-25 10:00:00")
AND (lap.raceDateTime < "2013-08-04 23:59:59")
AND (isTestLap =0)
GROUP BY `userId`
ORDER BY `qualificationTime` ASC
LIMIT 10
스키마 :
CREATE TABLE IF NOT EXISTS `lap` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`userId` int(11) DEFAULT NULL,
`trackId` int(11) DEFAULT NULL,
`raceDateTime` datetime NOT NULL,
`qualificationTime` decimal(7,4) DEFAULT '0.0000',
`isTestLap` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
당신은 lap.ID
, lap.qualificationTime
및 lap.userId
을 선택하는
ID가 가장 빠른 랩이 필요한가 아니면 잠깐입니까? – Uriil
@Uriil 실제로 ID 만 필요합니다. qualificationTime 및 userId 행이이 문제를 디버깅하기 위해 선택되고 있습니다. – dKen
동일한 사용자의 두 바퀴가 동일한 지속 시간을 갖는 경우 어떻게해야합니까? – Uriil