mysql变量有问题,我做错了什么?

uidvcgyl  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(324)

请参阅下面的测试。
我已经为这个忙了几个小时了。我已经搜索了很多帖子,尽我所能,一切都是正确的。
我在if比较和@maleemale变量方面遇到了问题。我可以通过在存储过程中声明变量来实现这一点,没有任何问题,我只想让这该死的东西在上面的在线编辑器中工作,与朋友分享,在这种情况下,只想让这该死的东西工作。我错过了什么?

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;
ef1yzkbh

ef1yzkbh1#

我同意gordon linoff的回答,但由于我还不能发表评论,我只想纠正代码中的两件事:

select (case sign(sum(gender = 'male') - sum(gender = 'female') )
             when 1 then 'male' 
             when -1 then 'female'
             when 0 then 'same'
        end)
from test;

当性别数量相等(相同)时添加了条件,这也是预期的React。条件 where gender like 'male' 被删除了,这就限制了搜索范围只限于性别“男性”。

aor9mmx1

aor9mmx12#

此查询完全不需要变量:

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 . 它只允许在编程块中使用——想想存储过程、函数和触发器。

thtygnil

thtygnil3#

根据mysql文档,if语句只允许在存储程序中使用。
存储程序的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([条件],[然后],[其他])
因为我不能评论你的问题。否决票可能是因为你不必要的咒骂。我能理解你很沮丧,但也许一句“该死的”就够了。

相关问题