TeraGo
618
2020-09-07 05:15:24
3
227

MSSQL 다중 select..


select top 6 * FROM A UNION select top 6 * FROM B

간단하게 2개의 테이블에서 각각 6개씩만 가지고와서 최신글 출력해주려고 합니다.

기존에 최신글 관련된 로직이 없어서 신규로 만들어야 하는데 간단한 방법이 있을까요..

해당 방법으로 하니 A 테이블에 있는 데이터 6개만 들고오고있습니다.

A에서 6개, B 에서6 개를 들고와서 writeTime 순으로 진열하려고 합니다.

감사합니다 !
0
  • 답변 3

  • BK
    1k
    2020-09-07 05:37:25

    `A`와 `B`의 길이가 각각 6이상인게 확실 하다면, `UNION ALL` 을 써야할때 `UNION`을 쓰셨으리라 생각되네요:

    2개의 쿼리 결과를 단일 결과 세트로 연결합니다. 결과 세트에 중복 행을 포함할지 여부를 제어합니다.
    • UNION ALL - 중복 항목을 포함합니다.
    • UNION - 중복 항목을 제외합니다.


    출처: 

    https://docs.microsoft.com/ko-kr/sql/t-sql/language-elements/set-operators-union-transact-sql?view=sql-server-ver15


  • TeraGo
    618
    2020-09-07 05:53:24

    BK 


    늦은시간에 답변 감사합니다.


    테이블 A 는 포토게시판이고 B 는 공지사항 이라 서로 데이터가 다릅니다.


    글 갯수또한 다릅니다 ㅠㅠ


    성능은 일체 고려하지않고 있고.. 각 게시판에서 작성일 순으로 합 6개의 글을 가지고오려고 합니다.


    감사합니다 !

  • createA
    80
    2020-09-07 09:03:30


     SELECT * 
       FROM ( SELECT TOP 6 *
                FROM T1
               ORDER BY writeTime DESC
             ) A
      UNION ALL
     SELECT * 
       FROM ( SELECT TOP 6 
                FROM T2
               ORDER BY writeTime DESC
             ) B
      ORDER BY writeTime DESC;


  • 로그인을 하시면 답변을 등록할 수 있습니다.