MySQL: requête de sélection à l'aide WHERE IN () avec des variables sur la base des conditions

Krunal:

Pour mon MySQL PROCEDURE, j'ai une instruction de requête sélection avec WHERE IN (...)clause, dont j'ai besoin des entrées conditionnelles / variables.

exemple:

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

Comment puis-je parvenir à l'aide d'une seule requête?

Note: Cette instruction select de requête est à l' intérieur mySQL PROCEDURE.


Je cherche quelque chose comme ceci:

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);
Akina:
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.sectionne doivent pas contenir des virgules et pas besoin d'être cité avec ". -À- dire qu'il est peut - être 'A'(on trouvera dans toutes les variantes), 'D'(seulement quand <CONDITION 1>est faux et <CONDITION 2>est vrai) ou 'X'(jamais).

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=347286&siteId=1
conseillé
Classement