본문 바로가기
MySql

MySQL 여러 AND 문이있는 MySQL 쿼리가 하나를 무시하는 것 같습니다.

by 베이스 공부 2020. 10. 21.
반응형

MySQL 데이터베이스에서 쿼리를 실행하려고하는데 'status'항목을 무시하는 것 같습니다.

SELECT * FROM  `posts`  
WHERE
      `tags` LIKE '%gda%' 
   OR `tags` LIKE '%contests%' 
   OR `tags` LIKE '%merch%' 
  AND `newsID` != '2134' 
  AND `status` > '1' 
ORDER BY  `postDate` DESC  LIMIT 5

이 예에서는 'status'가 0으로 설정되어 있어도 여전히 항목을 가져옵니다. 내가 뭘 잘못하고 있습니까?

 

해결 방법

 

문제는 OR / AND 조건의 우선 순위에 있습니다. AND OR 보다 우선 순위가 높기 때문에 먼저 AND (tags-merch, newsID-2134 및 status- 1) 그런 다음 tags-gda 및 tags-contests를 모두 평가합니다.

대괄호를 추가하십시오.

SELECT *  
  FROM  `posts`  
 WHERE (`tags` LIKE  '%gda%' 
    OR  `tags` LIKE  '%contests%' 
    OR  `tags` LIKE  '%merch%')
   AND  `newsID` !=  '2134' 
   AND `status` > '1' 
ORDER BY  `postDate` DESC
LIMIT 5

 

참조 페이지 https://stackoverflow.com/questions/4733312

 

 

반응형

댓글