首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL:根据条件选择使用WHERE ()和变量的查询

MySQL:根据条件选择使用WHERE ()和变量的查询
EN

Stack Overflow用户
提问于 2020-03-19 12:59:51
回答 1查看 29关注 0票数 0

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

示例:

代码语言:javascript
运行
复制
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中。

我在找这样的东西:

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-19 13:18:20

代码语言:javascript
运行
复制
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' (从不)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60757779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档