복붙노트

[SQL] 어떻게 SQL 쿼리에서 변수를 설정하는 방법?

SQL

어떻게 SQL 쿼리에서 변수를 설정하는 방법?

나는 SQL 쿼리에서 변수를 설정하기 위해 노력하고있어 :

declare @ModelID uniqueidentifer

Select @ModelID = select modelid from models
where areaid = 'South Coast'

분명히 나는 ​​그것이 작동하지 않는 한이 권리를하고 있지 않다. 누군가가 솔루션을 제안 할 수 있습니다?

감사!

해결법

  1. ==============================

    1.

    SELECT @ModelID = m.modelid 
      FROM MODELS m
     WHERE m.areaid = 'South Coast'
    
    SET @ModelID = (SELECT m.modelid 
                      FROM MODELS m
                     WHERE m.areaid = 'South Coast')
    

    SQL에서 SELECT 및 SET를 사용 사이의 차이에 대한이 질문을 참조하십시오.

    이 select 문은 여러 값을 반환하는 경우 (나쁜로 시작하는) :

  2. ==============================

    2.

    SELECT @ModelID = modelid
    FROM Models
    WHERE areaid = 'South Coast'
    

    당신의 선택 문이 여러 값을 반환하는 경우, 변수는 반환되는 마지막 값이 할당됩니다.

    변수 SELECT 사용에 대한 참조를 들어 http://msdn.microsoft.com/en-us/library/aa259186%28SQL.80%29.aspx

  3. ==============================

    3.

    declare @ModelID uniqueidentifer
    
    --make sure to use brackets
    set @ModelID = (select modelid from models
    where areaid = 'South Coast')
    
    select @ModelID
    
  4. ==============================

    4.난 그냥 선언 문에서 설정 선호

    난 그냥 선언 문에서 설정 선호

    DECLARE @ModelID uniqueidentifer = (SELECT modelid 
                                        FROM models
                                        WHERE areaid = 'South Coast')
    
  5. ==============================

    5.사용 TOP 1 쿼리가 여러 행을 반환하는 경우.

    사용 TOP 1 쿼리가 여러 행을 반환하는 경우.

    SELECT TOP 1 @ModelID = m.modelid 
      FROM MODELS m
     WHERE m.areaid = 'South Coast'
    
  6. ==============================

    6.이를 사용하지만 쿼리가 1 개 결과를 제공하는 것이 여러 결과가 예외가 발생합니다 기억할 수있다.

    이를 사용하지만 쿼리가 1 개 결과를 제공하는 것이 여러 결과가 예외가 발생합니다 기억할 수있다.

    declare @ModelID uniqueidentifer
    Set @ModelID = (select Top(1) modelid from models where areaid = 'South Coast')
    

    또 다른 방법:

    Select Top(1)@ModelID = modelid from models where areaid = 'South Coast'
    
  7. ==============================

    7.

    Select @ModelID =m.modelid 
    From   MODELS m
    Where  m.areaid = 'South Coast'
    

    이 경우 두 개 이상의 결과는 다음 반환 당신의 결과는 마지막 기록이다 경우. 당신이 예상 된 결과가 표시되지 않을 수 있습니다 당신이 두 개 더 레코드가 반환을 가질 수 있다면 그래서이 인식.

  8. from https://stackoverflow.com/questions/3974683/how-to-set-variable-from-a-sql-query by cc-by-sa and MIT license