기본 키 _id 및 다음 쿼리를 사용하여 테이블 (사용자)에서 임의의 행을 검색하려고합니다. 확실히 어떤에 대해, 하나 개의 정수를 반환해야합니다 부질에서 어떤 결과로, MYSQL 쿼리에 여러 행이 표시되는 이유는 무엇입니까?
나는이 놀라운 찾을 ...SELECT *
FROM user
WHERE _id IN (SELECT Floor(1 + (Rand() * (Count(_id) - 1)))
FROM user);
행이 테이블에서 삭제되지 않았다 그러나 나는 (일관성) 여러 행을 반환받을 프라이 머리 키 ..... 항상 1 레코드이어야합니다!
@variables를 사용하여 임의의 행을 선택할 수 없기 때문에 하나의 쿼리를 사용하고 싶습니다. 아마도 준비된 문으로 만들 것이고 LIMIT 절을 사용하지 않을 것입니다. Server 버전 :
내 MySQL을 환영 문은 다음과 같이 내 버전이 나에게 말한다 5.5.29-0ubuntu0.12.04.2 (우분투)
여러 있습니까 '같은 값의 _id'? 행을 반환하는 경우 문제가있는 _id1, count (_id1)> 1을 가진 사용자 그룹에서 SELECT _ID1, count (_id1)을 수행하십시오. –
쿼리의이 부분을 실행 해보십시오 (FLOOR (1+ (RAND() * (COUNT (_id) -1))) 사용자로부터)'IN'을'='로 바꾸어보십시오. 에러가 발생하면 어디서 문제가 있는지 알 수 있습니다. –
@MattBusche 고유 한'_id '값. http://www.sqlfiddle.com/#!2/2fda3/7을 참조하십시오. 0, 1 또는 2 개의 결과가 표시됩니다. – GolfWolf