【发布时间】:2020-06-30 14:58:01
【问题描述】:
对于我的 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');
如何使用单个查询来实现这一目标?
注意:这个 select 查询语句在 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);
【问题讨论】:
-
WHERE tt.section IN ('A', 'B', 'C') OR tt.section IN ('A', 'B', 'D') ...? OR Clause -
@GrumpyCrouton - 谢谢你的帮助。我正在寻找此查询的特定输入,但我无法使用
OR或AND条件。 -
WHERE FIND_IN_SET(tt.section, 'A,B,C')。条件数组具有单个文字 CSV 形式,而不是单独的文字,具有任何值数量。
标签: mysql select procedure where-in