Krunal :
내 MySQL을 위해 PROCEDURE
, 내가 사용하여 선택 쿼리 문이 WHERE IN (...)
좀 조건 입력 / 변수를 필요로하는 절을.
예:
SELECT * FROM test_table tt WHERE tt.section IN ('A', 'B', 'C');
SELECT * FROM test_table tt WHERE tt.section IN ('A', 'B', 'D');
SELECT * FROM test_table tt WHERE tt.section IN ('A','C');
SELECT * FROM test_table tt WHERE tt.section IN ('A', 'B', 'C', 'D');
어떻게 하나의 쿼리를 사용하여이를 달성 할 수 있습니까?
참고 :이 선택 쿼리 문을 MySQL의 내부입니다 PROCEDURE
.
나는 이런 식으로 뭔가를 찾고 있어요 :
SET @ABC = '"A", "B", "C"';
SET @ABCD = '"A", "B", "C", "D"';
SET @AC = '"A", "B", "C", "D"';
SET @IN_CLAOUSE_VARIABLES = NULL;
IF (<CONDITION 1>) THEN
SET @IN_CLAOUSE_VARIABLES = @ABC;
ELSEIF (<CONDITION 2>) THEN
SET @IN_CLAOUSE_VARIABLES = @ABCD;
ELSE
SET @IN_CLAOUSE_VARIABLES = @AC;
END IF:
SELECT * FROM test_table tt WHERE tt.section IN (@IN_CLAOUSE_VARIABLES);
아키나 :
SET @ABC = 'A,B,C';
SET @ABCD = 'A,B,C,D';
SET @AC = 'A,C';
SET @IN_CLAOUSE_VARIABLES = NULL;
IF (<CONDITION 1>) THEN
SET @IN_CLAOUSE_VARIABLES = @ABC;
ELSEIF (<CONDITION 2>) THEN
SET @IN_CLAOUSE_VARIABLES = @ABCD;
ELSE
SET @IN_CLAOUSE_VARIABLES = @AC;
END IF:
SELECT * FROM test_table tt WHERE FIND_IN_SET(tt.section, @IN_CLAOUSE_VARIABLES);
tt.section
쉼표를 포함하지와 함께 인용 할 필요가 있어야합니다 "
. 즉 그것은있을 수 있습니다 'A'
(모든 변종에서 찾을 수) 'D'
(경우에만 <CONDITION 1>
거짓없고 <CONDITION 2>
진실하다) 또는 'X'
(결코).