테스트 사이트 - 개발 중인 베타 버전입니다

서브쿼리 질문입니다. 채택완료

lacomparte 7년 전 조회 1,990

</p>

<p>SET @num = 0;

SELECT *,(@num:=@num+1) AS num FROM (SELECT * FROM `g5_scrap`) AS num WHERE mb_id = 'xxx' order by ms_id desc</p>

<p>

 

위의 쿼리로 질의했을때

결과가

 

ms_id | mb_id | bo_table | wr_id | ms_datetime | num

127   | xxx     | 보드이름 | 128   | 날짜            | 1

125   | xxx     | 보드이름 | 121   | 날짜            | 2

122   | xxx     | 보드이름 | 110   | 날짜            | 3

121   | xxx     | 보드이름 | 100   | 날짜            | 4

111   | xxx     | 보드이름 | 199   | 날짜            | 5

110   | xxx     | 보드이름 | 532   | 날짜            | 6

109   | xxx     | 보드이름 | 335   | 날짜            | 7

 

이렇게 출력됩니다.

근데 여기서

ms_id 가 127인 row의 num 값을 어떻게 가져와야 하나요?ㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
7년 전

서브쿼리가 아니라 인라인 테이블로 처리 하는게 맞는듯 합니다.

</p>

<p>SET @num = 0;</p>

<p>SELECT ms_id FROM (</p>

<p>    SELECT *,(@num:=@num+1) AS num</p>

<p>    FROM (SELECT * FROM `g5_scrap`) AS num</p>

<p>    WHERE mb_id = 'xxx' order by ms_id desc</p>

<p> ) T</p>

<p>WHERE T.num = 127</p>

<p>

 

이런식으로요 ^^

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

l
lacomparte
7년 전
감사합니다. 아직 저에겐 너무 어려운게 많네요 ㅋㅋ
나시
7년 전
SELECT ms_id FROM ( ==> SELECT T.num FROM
WHERE T.num = 127 ==> WHERE T.ms_id = 127

로 바꾸시면 원하는 결과가 나오지 싶으네요 ^^

댓글을 작성하려면 로그인이 필요합니다.

7년 전

WHERE mb_id = 'xxx'  다음에  and ms_id = 127 하면 되지않을까요 ?

즉 

WHERE mb_id = 'xxx'  and ms_id = 127  으로 해주면 될것 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인