2011-09-22 5 views
1

그래서 제품 가격을 저장해야하는 varchar 열이 있습니다. 어떻게 그 결과를 얻었는지 묻지 말고 지금이 옵션을 변경할 수있는 옵션이 없습니다. ... 한숨), 그것은 또한 비어 있거나 텍스트 (사실상) "null", "OUT"둘 모두가 0의 가격을 나타내는 텍스트를 포함 할 수 있습니다. MIN 및 MAX를 찾는 가장 효과적이고 효율적인 방법은 무엇입니까? 이 열의 가치?varchar 필드에서 최소/최대 값을 선택하는 MySQL 쿼리

추신 : 나는 PHP/MySQL 하이브리드 솔루션에 개방되어있어,이를 위해 가장 최적화되고 효율적인 방법이 필요합니다. 이 테이블은 정말 거대합니다 ...

+0

은 제가 숫자 열 그것을 계산하는 트리거를 추가 할 거라고 생각합니다. 만약 당신이 숫자에 자주 접근하면, 한 번 더 잘 변환 할것이다. 응답 설정을 위해서 – Martin

답변

3

이와 비슷한 것이 효과적이어야합니다. 그것은 어떤 경우에도 빠르지 않을 것입니다.

SELECT 
    MIN(CAST(price AS DECIMAL(8,2))) as price_min, 
    MAX(CAST(price AS DECIMAL(8,2))) as price_max 
FROM products 
WHERE price NOT IN('', 'null', 'OUT') 

이 테스트 후, 나는 분명히 캐스팅이 자동으로 수행되는 것으로 나타났습니다, 그래서 당신은 다만 할 수 있습니다

SELECT 
    MIN(price) as price_min, 
    MAX(price) as price_max 
FROM products 
WHERE price NOT IN('', 'null', 'OUT') 
+2

필자의 경우 자동으로 캐스팅이 수행되지 않고 명시 적으로 설정해야한다. 그렇지 않으면 결과는 다음과 같다 : 99429> 10000032 –

관련 문제