2012-02-13 2 views
2

IN 절 또는 다른 쿼리를 사용하여이 데이터베이스 쿼리를 간소화하는 변경 사항이 요청에 여러 번 실행되어야합니다?다중 행에 대한 WHERE 절의 데이터베이스 쿼리 단순화

SELECT `id` 
FROM `tablename` 
WHERE `columnname1` = "longer-value" OR 
     `columnname2` = "longer-value" OR 
     `columnname3` = "longer-value" OR 
     `columnname4` = "longer-value" OR 
     `columnname5` = "longer-value" OR 
     `columnname6` = "longer-value" OR 
     `columnname7` = "longer-value" OR 
     `columnname8` = "longer-value" OR 
     `columnname9` = "longer-value" OR 
     `columnname10` = "longer-value" 

이 쿼리는 10 개의 다른 열에 대한 값을 확인합니다.

+4

당신은 당신의 데이터베이스를 정상화하는 것을 잊었다 ...이 전 했어요. –

+0

'(요청마다 여러 번 실행해야 함)'붉은 깃발입니다. 쿼리 수를 줄일 수 있습니까? 아마도'JOIN'을 가지고 있을까요? –

+1

두 개의 정규화 된 테이블로 나눌 수없는 이유가 있습니까? 나는 풀 테이블 스캔이 정규화 된 룩업보다 훨씬 빠르다는 상황에서 앞서 말한 바있다.하지만 희귀하다. – gahooa

답변

5

사실

WHERE "longer-value" IN (`rowname1`, `rowname2`, ... , `rownameN`) 
+0

내가 실수 한 것 같아, 할 수 있니? rowname이 다른 열임을 알았습니까? –

+0

@DorCohen : 그게 뭐가 잘못 되었습니까? –

+0

@DorCohen : IN의 필드 또는 값과 함께 작동합니다. 'a = 10 OR b = 10 OR c = 10'의 구문 설탕입니다. – gahooa