我有一个查询没有返回正确的结果:
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/