>데이터 베이스 >MySQL 튜토리얼 >MySQL의 특정 필드에 WHERE 절을 제한할 수 있습니까?

MySQL의 특정 필드에 WHERE 절을 제한할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-05 18:17:02967검색

Can I Restrict WHERE Clauses to Specific Fields in MySQL?

MySQL에서 WHERE 절을 특정 필드로 제한할 수 있나요?

MySQL에서 WHERE 절은 지정된 조건에 따라 행을 필터링합니다. 그러나 WHERE 절의 적용을 쿼리 내의 특정 필드로 제한하는 것은 불가능합니다.

문제 이해

질문의 맥락에서 목표는 사용 가능한 강좌 목록과 관련 사용자의 등록 상태를 표시하는 것입니다. 각 행은 강좌를 나타내며 특정 사용자의 등록 상태(userHabilitado)를 표시합니다. 그러나 사용자의 userID는 URL에서 가져와 해당 특정 사용자에 대한 결과를 필터링하는 데 사용해야 합니다.

해결책: 비전체 그룹별 활용

MySQL 5.7, MySQL에서는 전체 그룹이 아닌 그룹을 허용했습니다. 이는 group_concat과 같은 집계 함수를 집계되지 않은 열(NON AGGS)과 함께 사용할 수 있음을 의미합니다. 그러나 MySQL 5.7부터는 ONLY_FULL_GROUP_BY 설정이 기본적으로 활성화되어 이러한 쿼리를 허용하지 않습니다.

이 경우 쿼리는 이미 커서별로 그룹화되어 있는 표시되는 열 목록에 userHabilitado를 추가하려고 시도합니다. .cursoID. 그러나 표시되는 userHabilitado 값은 WHERE 절로 필터링되지 않으므로 코스에 관계없이 해당 사용자에 대해 발견된 첫 번째 값을 표시합니다.

해결 방법: Non-Full Group By 비활성화

한 가지 해결 방법은 SQL_CALC_FOUND_ROWS 수정자를 사용하여 특정 쿼리에 대해 ONLY_FULL_GROUP_BY를 비활성화하는 것입니다.

<code class="sql">SET SQL_CALC_FOUND_ROWS = 0;</code>

그러나 이는 결과에 잠재적인 불일치가 발생할 수 있고 다음과 함께 사용해야 하므로 권장되지 않습니다. 주의하세요.

위 내용은 MySQL의 특정 필드에 WHERE 절을 제한할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.