만약 내가 같은 MySQL의 쿼리IN을 LIMIT와 함께 사용할 때 랜덤하게 출력됩니까?
SELECT * FROM table1 WHERE id IN(1,2,3,4) LIMIT 2
테이블에서 1,2,3,4에서 ID 1, 2 또는 2 명 임의의 ID의로 행을 반환에는 mysql 것인가?
만약 내가 같은 MySQL의 쿼리IN을 LIMIT와 함께 사용할 때 랜덤하게 출력됩니까?
SELECT * FROM table1 WHERE id IN(1,2,3,4) LIMIT 2
테이블에서 1,2,3,4에서 ID 1, 2 또는 2 명 임의의 ID의로 행을 반환에는 mysql 것인가?
IN
에있는 처음 두 레코드를 반환하지만 order by
을 지정하지 않으면 순서가 보장되지 않습니다. 번호가 고정되어 있습니다 (귀하의 IN
절 (< =)에서 일치하는 숫자는 LIMIT
절에 지정된 숫자입니다), 주문하지 않습니다. 이제 일반적으로는 "주요"테이블
ID
1
3
2
4
이 쿼리
select * from main where id in (1,2,3,4) limit 2
반환
1
3
값이 table.It에 얼마나 그게 전부가 순서대로가 반환하기 때문에 말할 수 있습니다 데이터가 저장됩니다 (일반적인 MySQL 시나리오에서). 주문이됩니다
select * from main where id in (1,2,3,4) order by id limit 2
반환
1
2
테이블 구조, 레코드 순서 및 인덱스를 모르므로 최종 결과를 예측할 수 없습니다.
그러나이 정확한 쿼리의 경우, 이상한 스토리지 엔진이 없으면 재미있는 임의의 myslq 엔진이 아니라 항상 결과 집합의 처음 두 레코드가됩니다. 테이블 구조 또는 레코드를 변경하지 않는 한 결과 세트는 항상 동일해야합니다. 쿼리 최적화 프로그램은 인덱스가 변경되거나 해당 인덱스의 상대적인 카디널리티가 변경되지 않는 한 항상 계획하고 실행합니다.
사용자가 지정한 간격 내에서 ID를 사용하여 찾은 처음 두 레코드를 반환합니다. 을 지정하지 않으면 항목을 특정 순서로 가져올 수 있다고 보장 할 수 없습니다.
내가 MySQL을 말하지만에 없습니다 * 가장 * SQL 제품, 주문, 시스템은 무료입니다 * 당신은 * 정의하지 않는 경우 가장 편리한 순서로 결과를 반환하십시오. 따라서 원하는 순서를 지정 *하는 것이 좋은 습관입니다. –