2017-07-13 23 views
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是一個數字SQL變量在簡單的表使用

我的問題是它說,它不聲明

+0

您需要在使用它之前聲明該變量 – SchmitzIT

回答

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 
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實例可以做,但是這應該做的伎倆)

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' 

這樣工作,謝謝大家!