MySQL은 : 선택 쿼리를 사용하여 WHERE 조건에 기초 변수 IN ()

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'(결코).

추천

출처http://43.154.161.224:23101/article/api/json?id=347280&siteId=1