side044
100
2021-04-27 18:58:53
3
151

DB 서브쿼리 중첩관련 질문입니다


잠시 앱관련 제작하다가 DB도 넣어야 하는 일이 생겨서 3시간 벼락치기 하고 만들고 있습니다만,

서브쿼리 중첩을 이렇게 하면 안되는건지, 기본적인 문법을 틀린건지 잘 모르겠습니다...


SELECT * 

FROM 2021_04_27_10_23_08_550

WHERE

TIME > (

SELECT MIN(TIME)

FROM(

SELECT *

FROM 2021_04_27_10_23_08_550

WHERE TIME BETWEEN ("2021-04-27 10:23:08.550" AND "2021-04-27 10:23:08.750")

)

WHERE ID LIKE "%A" OR ID LIKE "%1" OR ID LIKE "%0"

        ORDER BY TIME DESC LIMIT 5

) AND

TIME < (

SELECT MAX(TIME)

FROM(

SELECT *

FROM 2021_04_27_10_23_08_550

WHERE TIME BETWEEN ("2021-04-27 10:23:08.550" AND "2021-04-27 10:23:08.750")

)

WHERE ID IN LIKE "%D" OR ID LIKE "%1" OR ID LIKE "%0"

ORDER BY TIME ASC LIMIT 5

);


간단히 설명하자면 특정 시간대의 ID중

특정 ID가 처음/마지막으로 발견되는 시간의 사이(시간대)를 구하는 쿼리입니다


이것저것 찾아보면서 만들고있는데, 여기서 1시간 쳐다보다 모르겠어서 질문 드립니다

0
  • 답변 3

  • 장독깨기
    3k
    2021-04-27 20:32:45

    서브쿼리 할 필요없이...

    select id, min(time), max(time)

    from table

    where id like '%D'

    and time between '2021..' and '2011...'

    group by id

  • 연습용더미1
    780
    2021-04-28 09:42:08

    서브쿼리의 리턴 row는 한 개만 허용됩니다.

    여기서 쓰인 서브쿼리들은 리턴 값이 여러 개 나올 가능성이 있어보이네요.

    그리고 서브쿼리 쓰는 쿼리 중에 간단한 것들은 웬만해선 서브쿼리 없는 다른 방식의 쿼리로 바꿀 수 있더군요.

  • side044
    100
    2021-04-28 09:53:39

    두분 다 감사합니다

    많은 도움 되었습니다

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