MySQLの: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>falseで、<CONDITION 2>真である)、または'X'(決して)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=347284&siteId=1