请参见下文并测试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;
答案 0 :(得分: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
。仅在编程块中允许使用-考虑存储过程,函数和触发器。
答案 1 :(得分:1)
根据mysql文档,如果只允许在存储程序中使用语句。
用于存储程序的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')
说明:
选择是否[[条件],[时间],[其他])
因为我无法评论您的问题。不赞成投票的原因可能是您不必要的宣誓。我知道您很沮丧,但是一个“该死”就足够了。
答案 2 :(得分:1)
我同意Gordon Linoff' response,但是,由于我还不能发表评论,我只想更正代码中的两件事:
@RestController
@RequestMapping("/import")
@PostMapping(value="import")
public ResponseEntity<String> importData(@RequestParam("file") MultipartFile file, @RequestParam("sType") String sType,
@RequestParam("CCName") String CCName) throws Exception {
添加了条件,用于当性别数量相等(相同)时,这也是预期的响应。条件select (case sign(sum(gender = 'male') - sum(gender = 'female') )
when 1 then 'male'
when -1 then 'female'
when 0 then 'same'
end)
from test;
已删除,将搜索限制为仅性别“ male”。