0
select 
MITARBEITER.NAME,
MITARBEITER.GEHALT
    from
        MITARBEITER
        where MITARBEITER.GEHALT = @minGehalt
        DECLARE @minGehalt as INT
        SET @minGehalt = (SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER)
        EXEC @minGehalt

@minGehalt 是一个数字

我的问题是它说它没有声明

4

3 回答 3

0

您需要在使用它之前声明该变量。这应该有效:

DECLARE @minGehalt as INT
SET @minGehalt = SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER

SELECT 
    MITARBEITER.NAME,
    MITARBEITER.GEHALT
FROM
    MITARBEITER
WHERE
    MITARBEITER.GEHALT = @minGehalt

(我没有对此进行测试,因为我没有可用的 MySQL 实例,但这应该可以解决问题)

于 2017-07-13T09:48:05.260 回答
0

使用@登录查询意味着您正在使用参数。需要使用DECLARE命令声明参数:

DECLARE @minGehalt int;

您还可以使用以下SET命令设置值:

DECLARE @minGehalt int;
SET @minGehalt = 1234;

select 
.....

或者在您的示例中:

DECLARE @minGehalt as INT
SET @minGehalt = SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER

select MITARBEITER.NAME,MITARBEITER.GEHALT
from MITARBEITER
where MITARBEITER.GEHALT = @minGehalt
于 2017-07-13T09:48:32.443 回答
0
DECLARE @minGehalt as INT
DECLARE @maxGehalt as INT
DECLARE @minName as varchar(30) 
DECLARE @maxName as varchar(30)
SET @minGehalt = (SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER)
SET @maxGehalt = (SELECT MAX(MITARBEITER.GEHALT) FROM MITARBEITER)
SET @minName = (SELECT MITARBEITER.NAME FROM MITARBEITER  WHERE MITARBEITER.GEHALT = @minGehalt)
SET @maxName = (SELECT MITARBEITER.NAME FROM MITARBEITER  WHERE MITARBEITER.GEHALT = @maxGehalt)
select  
    concat(@minName, '  ', @minGehalt) as 'Minimaler Gehalt',
    concat(@maxName, '  ', @maxGehalt) as 'Maximaler Gehalt'

就这样工作了,谢谢大家!

于 2017-07-13T10:35:33.670 回答