선택 쿼리의 MySQL IF ELSEIF
사용자가 선택한 수량에 따라 제품의 다른 가격을 선택하려고합니다. 이것은 내가 작업중 인 쿼리입니다 (구문 오류가 있음).
select id,
(SELECT
IF(qty_1<='23',price,1)
ELSEIF(('23'>qty_1 && qty_2<='23'),price_2,1)
ELSEIF(('23'>qty_2 && qty_3<='23'),price_3,1)
ELSEIF('23'>qty_3,price_4,1)
END IF) as total
from product;
참조를 위해 이와 같은 저장 프로 시저에서 사용한 내용 이 있지만 지금처럼 사용할 수는 없습니다. IF과 같이 사용할 수 있습니다 duskwuff. 그러나 Case진술은 눈에 더 좋습니다. 이렇게 :
select id,
(
CASE
WHEN qty_1 <= '23' THEN price
WHEN '23' > qty_1 && qty_2 <= '23' THEN price_2
WHEN '23' > qty_2 && qty_3 <= '23' THEN price_3
WHEN '23' > qty_3 THEN price_4
ELSE 1
END) AS total
from product;
이것은 더 깨끗해 보입니다. SELECT어차피 내면은 필요 없어 ..
IF()MySQL에서는 제어 구조가 아니라 삼항 함수입니다. 첫 번째 인수의 조건이 참이면 두 번째 인수를 반환합니다. 그렇지 않으면 세 번째 인수를 반환합니다. 해당 ELSEIF()기능이나 END IF키워드 가 없습니다 .
당신이 얻은 것과 가장 가까운 것은 다음과 같습니다.
IF(qty_1<='23', price,
IF('23'>qty_1 && qty_2<='23', price_2,
IF('23'>qty_2 && qty_3<='23', price_3,
IF('23'>qty_3, price_4, 1)
)
)
)
조건이 모두 나에게 의미가있는 것은 아니지만 (일부 부주의로 반전 될 수있는 것처럼 보입니까?)하지만 정확히 무엇을 달성하려고하는지 알지 못하면 고치기가 어렵습니다.
중첩 된 if () 함수를 사용할 때 MySQL 5.1.72에서 버그를 발견했습니다. .... 열 변수의 값 (예 : qty_1)이 두 번째 if () 내에서 비어있어 쓸모 없게 만듭니다. 대신 다음 구성을 사용하십시오.
case
when qty_1<='23' then price
when '23'>qty_1 && qty_2<='23' then price_2
when '23'>qty_2 && qty_3<='23' then price_3
when '23'>qty_3 then price_4
else 1
end
질문 :
SELECT id,
IF(qty_1 <= '23', price,
IF(('23' > qty_1 && qty_2 <= '23'), price_2,
IF(('23' > qty_2 && qty_3 <= '23'), price_3,
IF(('23' > qty_2 && qty_3<='23'), price_3,
IF('23' > qty_3, price_4, 1))))) as total
FROM product;
MySQL 의 if - else제어 구조 또는 IF함수를 사용할 수 있습니다 .
참조 :
http://easysolutionweb.com/sql-pl-sql/how-to-use-if-and-else-in-mysql/
As per Nawfal's answer, IF statements need to be in a procedure. I found this post that shows a brilliant example of using your script in a procedure while still developing and testing. Basically, you create, call then drop the procedure:
https://gist.github.com/jeremyjarrell/6083251
참고URL : https://stackoverflow.com/questions/13887616/mysql-if-elseif-in-select-query
'Nice programing' 카테고리의 다른 글
| 두 지리적 위치 사이의 거리 계산 (0) | 2020.11.22 |
|---|---|
| Xcode-구성 : 오류 : $ PATH에 허용 가능한 C 컴파일러가 없습니다. (0) | 2020.11.22 |
| Proguard 난독 화를 사용할 때 Gson EnumTypeAdapter의 AssertionError (0) | 2020.11.22 |
| UIImage가있는 UIBarButtonItem 항상 색조 iOS 7 (0) | 2020.11.22 |
| 신속한 SHA256 (0) | 2020.11.22 |