mysql - 查询结果不正确

标签 mysql mysql-workbench

我有一个查询没有返回正确的结果:

 SELECT t.GroupName AS GroupName, t.ApplicationName AS ApplicationName, t.UserName
        FROM UserApplication t
        WHERE (@ApplicationName IS NULL OR @ApplicationName = '' OR t.ApplicationName = @ApplicationName) AND
              (@UserName IS NULL OR @UserName = '' OR t.UserName= @UserName );

表结构:

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

当我不向参数传递任何值时,它会显示表中的所有行,而如果向参数 @ApplicationName 或 @UserName 传递任何值,它会给出相同的结果。 请帮忙

最佳答案

如果您正确设置用户变量的值,您的查询将正常工作

SET @ApplicationName = 'App 1';
SET @UserName = '';

SELECT t.GroupName, 
       t.ApplicationName, 
       t.UserName
  FROM UserApplication t
 WHERE (COALESCE(@ApplicationName, '') = '' 
     OR t.ApplicationName = @ApplicationName) 
   AND (COALESCE(@UserName, '') = '' 
     OR t.UserName= @UserName);

这是您的查询的更简洁的版本

这里是SQLFiddle 演示

关于mysql - 查询结果不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058473/

相关文章:

php - 不正确的 SQL 语句

MySQL LOCK TABLES 替代方案(用于存储过程)

mysql - 内部连接工作太慢 - 只在 phpmyadmin 中显示加载标签

mysql - 更改 SQL 表中的日期格式

mysql - 错误代码 : 2013. 查询期间丢失与 MySQL 服务器的连接

php - 在带有PDO的PHP中,如何检查最终的SQL参数化查询?

MySQL 变量错误

mysql-workbench - MySQL Workbench 连接失败

mysql - 使用 like 和 not like MySql 选择值时出错

mysql - 如何在Mysql Workbench中运行脚本?