>  기사  >  백엔드 개발  >  SQL 다중 조건 쿼리

SQL 다중 조건 쿼리

WBOY
WBOY원래의
2016-10-17 09:30:081299검색

다중 조건 쿼리를 구현하려면 값이 0일 때 sql을 사용하여 구현하는 방법이 제한되지 않습니다.

예: 특정 지역의 특정 유형의 매장을 쿼리할 때 지역이 무제한일 수 있습니다. 유형이 중국 음식인 경우 쿼리에는 지역 = 값이 필요하지 않고 유형 = 중국인 경우에만 필요합니다. food. 지역이 베이징이면 유형이 중국 음식입니다. 쿼리할 때 where 지역 =BeijingAND 유형=중국 음식입니다.

그 밖에도 if else를 사용하여 백엔드에서 판단한 후 다른 sql 문을 사용하여 쿼리하는 것은 너무 번거롭지만 sql에는 해당 솔루션이 있어야 한다고 생각합니다. 조언 좀 해주세요.

답글 내용:

다중 조건 쿼리를 구현하려면 값이 0일 때 sql을 사용하여 구현하는 방법이 제한되지 않습니다.

예: 특정 지역의 특정 유형의 매장을 쿼리할 때 지역이 무제한일 수 있습니다. 유형이 중국 음식인 경우 쿼리에는 지역 = 값이 필요하지 않고 유형 = 중국인 경우에만 필요합니다. food. 지역이 베이징이면 유형이 중국 음식입니다. 쿼리할 때 where 지역 =BeijingAND 유형=중국 음식입니다.

그 밖에도 if else를 사용하여 백엔드에서 판단한 후 다른 sql 문을 사용하여 쿼리하는 것은 너무 번거롭지만 sql에는 해당 솔루션이 있어야 한다고 생각합니다. 조언 좀 해주세요.

해당 위치를 확인하고 철자를 입력할 수 있습니다.
예: $sql = select * from xxx where 1=1;

<code>if(类型!=0){
    $sql .= 'and where 类型 = 中餐';
}</code>

쿼리 조건을 Map 매개변수로 사용한 다음 추가 쿼리 문을 연결하는 메서드를 사용합니다.

<code>public String getWhere(Map<String, Object> params) {
    String str = "";
    
    if(params.size() > 0) {
        boolean and = false;
        for(String param : params.keySet()) {
            Object value = params.get(param);
            if(value == null || value.equals(0)) {
                continue;
            } else {
                if(and) {
                    str = str + " and " + param + " = " + " " + value;
                } else {
                    and = true;
                    str = str + param + " = " + " " + value;
                }
                
            }
        }
    }
    
    if(str != "") { 
        str = " where " + str;
    }
    
    return str;
}</code>

mybatis는 SQL을 주문합니다
JPA는 creteria를 주문합니다

링크 조건 및 또는

Mysql 쿼리는 문자열을 사용하여 Mysql 쿼리 명령을 전달하므로 where 뒤에 있는 쿼리 조건을 수정하는 것이 완전히 가능합니다. 먼저 문자열 배열을 만들어 이러한 명령을 저장한 다음 매번 이를 사용하여 다음과 같은 조건을 수정할 수 있습니다. as Hook 주소를 선택한 후 해당 배열의 값을 수정하거나, 쿼리를 클릭한 후 인터페이스에서 식사 카테고리나 주소 등 어떤 구성요소가 확인되어 있는지 확인하고 해당 값을 가져와서 배열에 추가한 후 비어 있으면 처리되지 않습니다. 비어 있지 않으면 통합 조건 문자열에 추가되고 최종적으로 쿼리 명령 문자열에 추가됩니다.
string cmd = “select. * 통일된 조건이 있는 테이블 이름에서 "
초보라서 신중하게 생각하지 못했을 수도 있지만 이 접근 방식에는 큰 문제가 없을 것입니다

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