在哪里子句中的自定义列的替代?

时间:2018-12-21 04:12:38

标签: mysql mariadb metabase

我对SQL(自学)和StackOverflow比较陌生。因此,如果有新话题,我深表歉意。

基本上,我试图使用case函数创建一些自定义列,然后使用配置数据库中的一些可选输入变量对这些结果进行过滤。

我知道mysql的执行顺序不允许这种情况发生,因为select之前执行的位置在这里,但是我很沮丧。

我浏览了其他一些线程,发现使用group by和have可能是一个选择,但是我无法使其正常工作,所以我不确定它是否适用于此,因为我没有使用任何聚合函数

 SELECT (CASE
            WHEN b.a = 1 THEN 'String1'
            WHEN b.a = 2 THEN 'String2'
            WHEN b.a = 3 THEN 'String3'
        END) AS `CustomName1`,
       (CASE
            WHEN b.d = 4 THEN bc.a
            WHEN b.d = 5 THEN bc.b
            WHEN b.d = 6 THEN 'String4'
            WHEN b.d = 7 THEN 'String5'
            WHEN b.d = 8 THEN 'String6'
            WHEN b.d = 9 THEN concat('string7 ', bc.e)
            WHEN b.d = 10 THEN concat('string8 ', bc.f)
        END) AS `CustomName2`
FROM b
JOIN bc ON bc.id = b.id
WHERE b.id != 0 [[and `CustomName1` like concat('%',{{InputVar1}},'%')]] [[and `CustomName2` like concat('%',{{InputVar2}},'%')]]
LIMIT 100 ;

基本上我的最终选择是让用户Input进入InputVar1和InputVar2,它仅提供来自我的两个case语句匹配其中一个或两个的结果。

即。用户在InputVar1中输入“ String3”,在InputVar2中输入“ String4”,则只会填充行中包含“ String3”和“ String4”的行。

在此先感谢您的帮助或建议。

0 个答案:

没有答案
相关问题