복붙노트

[SQL] 하위 쿼리를 사용하여 여러 행을 삽입

SQL

하위 쿼리를 사용하여 여러 행을 삽입

이 쿼리입니다 :

INSERT INTO qualification_lookup (variation, correct_qualification)
SELECT (SELECT Qualification FROM student WHERE Qualification like 'A%') ,'A-Level'

내가 쿼리를 실행하려고하면이 내가 얻을 오류입니다.

그래서 친절하게 사람이 그렇게 나에게 어떤 대안을 지시하는 경우 SQL에 새로운 오전.

해결법

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

    1.

    INSERT INTO qualification_lookup (variation, correct_qualification) 
    select Qualification,'A-Level' from student   where Qualification like 'A%' 
    
  2. ==============================

    2.

        INSERT INTO qualification_lookup (variation, correct_qualification) 
    select Qualification, 'A-Level' from student where Qualification like 'A%'
    

    올바른 구문은

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

    3.당신은 당신이 당신의 쿼리를 작성하는 방법을 통해 생각해야 - 당신은 그냥이 실행 한 경우 당신이 얻을 것이 무엇 고려 :

    당신은 당신이 당신의 쿼리를 작성하는 방법을 통해 생각해야 - 당신은 그냥이 실행 한 경우 당신이 얻을 것이 무엇 고려 :

     SELECT (select Qualification from student where Qualification like 'A%') ,'A-Level'
    

    당신은 내 생각을 것 점점 정확한 오류 - 'A 급'- 당신은 하나의 문자열과 일치하려고 많은 자격의 목록을 가지고있다.

    다른 한편으로,이 잘 작동합니다

     select Qualification, 'A-Level' from student where Qualification like 'A%'
    

    INSERT 및 UPDATE 문에 그 트릭은, 내 마음에 당신이 필요로하는 무엇을 얻는 SELECT 문을 작성하고 다음과 같은 것을 마무리하는 것입니다

    INSERT INTO qualification_lookup (variation, correct_qualification) select Qualification, 'A-Level' from student where Qualification like 'A%'
    
  4. ==============================

    4.문제는이 하위 쿼리입니다 :

    문제는이 하위 쿼리입니다 :

    select Qualification from student where Qualification like 'A%'
    

    여러 행을 반환합니다. 당신이 오류 메시지가 512을받을 이유

    필요는 사용하지합니다.

    이 충분하다 :

    INSERT INTO qualification_lookup (variation, correct_qualification) 
    select Qualification, 'A-Level' as correct_qualification
    from student where Qualification like 'A%'
    
  5. ==============================

    5.

    declare @count int
    declare @index int = 1
    declare @currentQualificationId int = null
    
    set @count = (select distinct count(QualificationId) from Qualification  from  where 
    Qualification like 'A%')
    
    set @currentQualificationId = (SELECT QualificationId from (select QualificationId , 
    ROW_NUMBER() OVER (ORDER BY QualificationId) AS RowNumber from Qualification where 
    Qualification like 'A%') as Qualification
    where Qualification.RowNumber = @index) 
    
    
    while (@index <= @count)
     begin
    
        INSERT INTO qualification_lookup (variation, correct_qualification) 
         values((select Qualification where QualificationId = 
         @currentQualificationId),'A-Level')
    
        set @index = @index + 1
    
         set @currentQualificationId = (SELECT QualificationId from (select 
         QualificationId , ROW_NUMBER() OVER (ORDER BY QualificationId) AS RowNumber from 
         Qualification where Qualification like 'A%') as Qualification
         where Qualification.RowNumber = @index) 
    END
    
  6. from https://stackoverflow.com/questions/13830312/insert-multiple-rows-using-subquery by cc-by-sa and MIT license