SQL变量用于简单表

时间:2017-07-13 09:45:34

标签: sql mysql-variables

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是一个数字

我的问题是它没有宣布

3 个答案:

答案 0 :(得分: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实例,但这应该可以解决问题)

答案 1 :(得分: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

答案 2 :(得分: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'

以这种方式工作,谢谢大家!