mysql变量有问题,我在这里做错了啥?
Posted
技术标签:
【中文标题】mysql变量有问题,我在这里做错了啥?【英文标题】:Having trouble with mysql variables, what am I doing wrong here?mysql变量有问题,我在这里做错了什么? 【发布时间】:2019-03-05 06:09:15 【问题描述】:见下文并测试here。 我已经为此拉头发了几个小时了。我已经搜索了很多帖子,并且尽我所能告诉一切都是正确的。 我在进行 IF 比较和 @malefemale 变量时遇到问题。 我可以通过在存储过程中声明变量来解决这个问题,没有任何问题,我只想让该死的东西在上面的在线编辑器中工作以与朋友分享,在这种情况下,只是为了让该死的东西完全工作.我错过了什么?
create table test(id int, gender varchar(10), salary int);
insert into test(id, gender, salary) values (1, 'male', 40000), (2, 'male', 50000), (3,'male', 40000), (4, 'female', 60000), (5, 'female', 60000), (6,'female', 40000);
set @m =0;
set @f =0;
set @malefemale = 'same';
select count(*) into @m from test WHERE gender like 'male' and salary >= 50000;
select count(*) into @f from test WHERE gender like 'female' and salary >= 50000;
if @m > @f then
@malefemale = 'male';
else if @f > @m then
set @malefemale ='female';
endif
select @malefemale;
【问题讨论】:
为什么投反对票? 【参考方案1】:这个查询完全不需要变量:
select (case sign(sum(gender = 'male') - sum(gender = 'female') )
when 1 then 'male'
when -1 then 'female'
when 0 then 'same'
end)
from test
where gender like 'male' ;
如果您将其作为 mysql 代码运行,那么您的问题可能不是变量,而是 if
。它只允许在编程块中使用——想想存储过程、函数和触发器。
【讨论】:
【参考方案2】:根据 mysql 文档,if 语句只允许在存储程序中使用。
存储程序的 IF 语句实现了一个基本的条件构造。
Documentation
但是。有一个 IF 你可以使用。
create table test(id int, gender varchar(10), salary int);
insert into test(id, gender, salary) values (1, 'male', 40000), (2, 'male', 50000),
(3,'male', 40000), (4, 'female', 60000), (5, 'female', 60000), (6,'female', 40000);
set @m =0;
set @f =0;
select count(*) into @m from test WHERE gender like 'male' and salary >= 50000;
select count(*) into @f from test WHERE gender like 'female' and salary >= 50000;
select if (@m > @f, 'male', 'female')
解释: 选择 if ([CONDITION], [THEN], [ELSE])
因为我无法评论您的问题。否决票可能是因为您不必要的咒骂。我可以理解你很沮丧,但也许一个“该死”就足够了。
【讨论】:
谢谢,并注意到我的挫败感。【参考方案3】:我同意Gordon Linoff' response,但由于我还不能发表评论,我只想更正代码中的两点:
select (case sign(sum(gender = 'male') - sum(gender = 'female') )
when 1 then 'male'
when -1 then 'female'
when 0 then 'same'
end)
from test;
当性别数量相等(相同)时添加条件,这也是预期的响应。条件 where gender like 'male'
已被删除,这将搜索限制为仅性别“男性”。
【讨论】:
以上是关于mysql变量有问题,我在这里做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章
MobFox iOS 框架,XIB 卸载时崩溃......我在这里做错了啥?
嗨,我正在尝试学习 Apache 骆驼框架。我不知道我在这里做错了啥