首页 > 解决方案 > 基于参数的 SQL 查询分支语法

问题描述

我很想做一个这样的 MySQL 查询。我知道语法不正确,我不能在这样的查询开头使用“if”。顺便说一下,这是针对 Tableau 自定义 SQL 查询的。我希望 AccountID 的负值表示显示所有帐户,正值表示显示与正值关联的帐户,或者如果没有与正值关联的帐户则不显示任何内容。

if <Parameters.AccID> < 0
    select * from Accounts
else
    select * from Accounts where id = <Parameters.AccID>

有人可以用正确的语法帮我做到这一点吗?由于我必须使用 Tableau Desktop 作为平台,因此我只能访问查询语法。

标签: mysql

解决方案


如果需要,您可以运行这样的多查询。

SELECT if (Parameters.AccID < 0, @q := 'select * from Accounts',@q := CONCAT('select * from Accounts where id = ',Parameters.AccID));
 PREPARE stmt from @q;
 EXECUTE stmt;
 DEALLOCATE PREPARE stmt
 

推荐阅读