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

Copy
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

위의 쿼리로 질의했을때

결과가

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 포인트

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

Copy
SET @num = 0;

SELECT ms_id FROM (

    SELECT *,(@num:=@num+1) AS num

    FROM (SELECT * FROM `g5_scrap`) AS num

    WHERE mb_id = 'xxx' order by ms_id desc

 ) T

WHERE T.num = 127

이런식으로요 ^^

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

답변에 대한 댓글 2개

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

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

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

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

즉 

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

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

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

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

로그인
🐛 버그신고