mysql 可以在查询中使用IF吗?

t3psigkw  于 2023-02-18  发布在  Mysql
关注(0)|答案(2)|浏览(182)

我正在使用Grafana从MySQL数据源中绘制数据。在面板的查询编辑器中,是否可以使用IF ... THEN ... type语句。我想创建一个可以放入IF的变量。我希望该变量是一个条件,不必直接在查询中使用。
例如:

//IN THE DATA SOURCE:

CREATE TABLE Example (Id INT, ANIMALS VARCHAR(15));
INSERT INTO Example VALUES (1,'Dog'), (2,'Fish'), (3,'Cat'), (4,'Lizard')

对于值为"哺乳动物"、"爬行动物"、"其他"的变量测试:

//WHAT I'D LIKE IN GRAFANA QUERY EDITOR:

IF($Test = "Mammal") THEN
SELECT * FROM Example WHERE Id = 1 OR Id =3;
ELSE
SELECT * FROM Example WHERE Id = 2 OR Id =4;
END IF;

这种基于条件的查询可能吗?如果可能,正确的语法是什么?有什么方法可以使用Grafana变量来达到类似的效果吗?

brgchamk

brgchamk1#

使用查询,查询以SELECT关键字开头,查询前不要使用任何IF ELSE条件,例如:

SELECT * 
FROM Example 
WHERE 
  Data IN ( ${variable:csv} )

WHERE条件语法适用于单值、多值Grafana Jmeter 板变量以及All值(没有自定义All值,但有blank=auto)。当然,此条件主要适用于INT列类型。STRING类型可能需要不同的条件(例如,LIKE和regexp匹配)。
在WHERE部分编写所有逻辑(依赖于 Jmeter 板变量)。使用查询检查器查看生成的SQL,并调整它以纠正SQL语法。

gz5pxeao

gz5pxeao2#

你可以使用or来代替if,它对于有条件地检查变量非常有用:

select * from Example
where (Id in (1,3) or '$Test' != 'Mammal')
and (Id in (2,4) or '$Test' == 'Mammal')

相关问题