복붙노트

[SQL] SQL, 어떻게 연결할 결과에?

SQL

SQL, 어떻게 연결할 결과에?

나는 현재 필드의 수를 반환하는 SQL 쿼리를 가지고있다. 나는 효과적으로 할 하위 쿼리 하위 것과 필드 f를 하나가 필요합니다.

상세히 문제점 :

EG 결과에서 반환

 (SELECT ModuleValue FROM Table_X WHERE ModuleID=@ModuleID)

값 1

값 2

값 3

...

나는 (위 달리, 하나의 행으로)하여 결과를 반환해야합니다

사용자가 할 수있는 간단한 병합 방법이 있습니까?

편집하다:

해결법

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

    1.MSSQL을 사용하면 같은 것을 할 수 있습니다 :

    MSSQL을 사용하면 같은 것을 할 수 있습니다 :

    declare @result varchar(500)
    set @result = ''
    select @result = @result + ModuleValue + ', ' 
    from TableX where ModuleId = @ModuleId
    
  2. ==============================

    2.이 사람은 자동으로 제외 후행 쉼표, 다른 답변의 대부분과 달리.

    이 사람은 자동으로 제외 후행 쉼표, 다른 답변의 대부분과 달리.

    DECLARE @csv VARCHAR(1000)
    
    SELECT @csv = COALESCE(@csv + ',', '') + ModuleValue
    FROM Table_X
    WHERE ModuleID = @ModuleID
    

    합니다 (ModuleValue 열이 있지 않으면 문자열 유형은 다음 당신은 VARCHAR로 캐스팅해야 할 수도 있습니다.)

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

    3.MySQL의에서 다음과 같은 기능을 사용하십시오 :

    MySQL의에서 다음과 같은 기능을 사용하십시오 :

    SELECT GROUP_CONCAT(ModuleValue, ",") FROM Table_X WHERE ModuleID=@ModuleID
    

    난 당신이 사용하고있는 방언 모르겠습니다.

  4. ==============================

    4.SQL Server 2005 및 최대, 당신이 뭔가를 할 수 있습니다 :

    SQL Server 2005 및 최대, 당신이 뭔가를 할 수 있습니다 :

    SELECT 
        (SELECT ModuleValue + ','
         FROM dbo.Modules
         FOR XML PATH('')
        ) 
    FROM dbo.Modules
    WHERE ModuleID = 1
    

    이것은 당신에게 당신이 찾고있는 같은 것을 제공해야합니다.

    즙을 짜고 난 찌꺼기

  5. ==============================

    5.제 생각에는, 당신이 경우 (...) STRING_AGG를 사용하여 나중에 SQL 서버 2017 이상을 사용하는 것이 가장 좋은 방법입니다 :

    제 생각에는, 당신이 경우 (...) STRING_AGG를 사용하여 나중에 SQL 서버 2017 이상을 사용하는 것이 가장 좋은 방법입니다 :

    더에서 :

  6. ==============================

    6.그것은 당신이 사용중인 데이터베이스에 따라 달라집니다. 예를 들어, MySQL은 (비표준) GROUP_CONCAT 기능을 지원한다. 당신이 쓸 수 있도록 :

    그것은 당신이 사용중인 데이터베이스에 따라 달라집니다. 예를 들어, MySQL은 (비표준) GROUP_CONCAT 기능을 지원한다. 당신이 쓸 수 있도록 :

    SELECT GROUP_CONCAT(ModuleValue) FROM Table_X WHERE ModuleID=@ModuleID
    

    그룹-CONCAT하지만 모든 데이터베이스 서버에서 사용할 수 없습니다.

  7. ==============================

    7.마크에 작은 업데이트 우리는 마지막에 ","추가해야합니다. 내가 추가 세미콜론을 제거하기 위해 물건 기능을 사용했다.

    마크에 작은 업데이트 우리는 마지막에 ","추가해야합니다. 내가 추가 세미콜론을 제거하기 위해 물건 기능을 사용했다.

           SELECT STUFF((  SELECT ',' + ModuleValue AS ModuleValue
                               FROM ModuleValue WHERE ModuleID=@ModuleID
                          FOR XML PATH('') 
                         ), 1, 1, '' )
    
  8. from https://stackoverflow.com/questions/1339788/sql-how-to-concatenate-results by cc-by-sa and MIT license