查询无法正常工作

查询无法正常工作

我想要的是如果不将任何值传递给变量,则它应显示表中的所有值,而如果我将值传递给变量,则应将数据传递给该参数的过滤器。

SET @groupname := 'MidasGoogleAppsUsers';
IF @groupname = '' THEN
SELECT t.GroupName AS GroupName, t.GroupName AS ApplicationName, t.UserName
FROM UserApplication t;

ELSE

SELECT t.GroupName AS GroupName, t.GroupName AS ApplicationName, t.UserName
    FROM UserApplication t
    WHERE t.GroupName = @groupname;

END IF;


这是下面的表结构:

CREATE TABLE userapplication
            (`ID` INT,
             `ApplicationName` VARCHAR(100),
             `GroupName` VARCHAR(100),
             `UserName` VARCHAR(100))

最佳答案

尝试这个:

    SELECT t.GroupName AS GroupName, t.GroupName AS ApplicationName, t.UserName
    FROM UserApplication t
    WHERE @Groupname is null or @Groupname = '' or t.GroupName = @groupname;


您可以使用where子句中的逻辑进行此操作。您完全不需要if

要添加更多条件:

    SELECT t.GroupName AS GroupName, t.GroupName AS ApplicationName, t.UserName
    FROM UserApplication t
    WHERE (@Groupname is null or @Groupname = '' or t.GroupName = @groupname) and
          (@UserName is null or @UserName = '' or t.UserName= @UserName );

关于mysql - 查询无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17025065/

10-12 05:02