MySQL:Select根据条件使用WHERE IN()和变量查询

MySQL: Select query using WHERE IN () with variables on the basis of conditions

对于我的 MySQL PROCEDURE,我有一个使用 WHERE IN (...) 子句的 select 查询语句,为此我需要一些条件 inputs/variables.

示例:

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');

如何使用单个查询实现此目的?

注意:这个select查询语句在mySQLPROCEDURE.

里面

我正在寻找这样的东西:

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 不得包含逗号且不需要用 " 引起来。 IE。它可能是 'A'(将在所有变体中找到)、'D'(仅当 <CONDITION 1> 为假且 <CONDITION 2> 为真时)或 'X'(从不) .