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'
(从不) .
对于我的 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'
(从不) .