>  기사  >  백엔드 개발  >  도움말: mysql은 주어진 ID 순서에 따라 결과를 어떻게 찾나요?

도움말: mysql은 주어진 ID 순서에 따라 결과를 어떻게 찾나요?

WBOY
WBOY원래의
2016-10-10 11:56:231104검색

스승님, 이제 문제가 발생하여 도움이 필요합니다.

다음과 같은 두 개의 테이블이 있습니다
포스트 테이블: 기사 테이블.
기록 테이블: 사용자의 읽기 순서를 기록하는 데 사용되는 기록 테이블입니다.

레코드 테이블은 postid 필드를 사용하여 사용자가 기사를 읽는 순서에 따라 post 테이블의 기본 키 ID를 기록합니다. 즉, Record.postid의 외래 키는 post.id입니다.

이제 레코드 테이블의 postid를 기준으로 post 테이블의 기사를 찾아야 합니다. (읽는 순서는 '1조, 2조, 2조, 3조, 3조'라고 가정하고, 반복 기사를 허용합니다.)
저는

부터 시작했습니다.
<code>SELECT *
FROM post
WHERE id IN (postid1,postid2,postid2,postid3,postid3);</code>

검색 결과는 postid1, postid2, postid3인 기사만 찾을 수 있습니다.

지금 우리가 원하는 비즈니스 로직은 다음과 같습니다.
1: 사용자의 독서 기록을 기반으로 포스트 테이블에서 기사를 찾습니다.
2: 중복이 허용됩니다.

예를 들어 사용자가 읽은 기사의 읽기 순서는 '1조, 2조, 2조, 3조, 3조'이고, 게시물 테이블을 검색한 결과는 post.id1, ​​​post.id2, post.id2, post.id2,post.id3.

참고: FOR 루프 사용을 고려하세요

<code> for (.....){
      ...
      变量 数组x;
      数组x添加 SELECT * FROM post WHERE id = postidx;
      ....
 }</code>

하지만 효율성이 걱정됩니다.

답글 내용:

스승님, 이제 문제가 발생하여 도움이 필요합니다.

다음과 같은 두 개의 테이블이 있습니다
포스트 테이블: 기사 테이블.
기록 테이블: 사용자의 읽기 순서를 기록하는 데 사용되는 기록 테이블입니다.

레코드 테이블은 postid 필드를 사용하여 사용자가 기사를 읽는 순서에 따라 post 테이블의 기본 키 ID를 기록합니다. 즉, Record.postid의 외래 키는 post.id입니다.

이제 레코드 테이블의 postid를 기준으로 post 테이블의 기사를 찾아야 합니다. (읽는 순서는 '1조, 2조, 2조, 3조, 3조'라고 가정하고, 반복 기사를 허용합니다.)
저는

부터 시작했습니다.
<code>SELECT *
FROM post
WHERE id IN (postid1,postid2,postid2,postid3,postid3);</code>

검색 결과는 postid1, postid2, postid3인 기사만 찾을 수 있습니다.

지금 우리가 원하는 비즈니스 로직은 다음과 같습니다.
1: 사용자의 독서 기록을 기반으로 포스트 테이블에서 기사를 찾습니다.
2: 중복이 허용됩니다.

예를 들어 사용자가 읽은 기사의 읽기 순서는 '1조, 2조, 2조, 3조, 3조'이고, 게시물 테이블을 검색한 결과는 post.id1, ​​​post.id2, post.id2, post.id2,post.id3.

참고: FOR 루프 사용을 고려하세요

<code> for (.....){
      ...
      变量 数组x;
      数组x添加 SELECT * FROM post WHERE id = postidx;
      ....
 }</code>

하지만 효율성이 걱정됩니다.

SELECT P.*
FROM Post P
LEFT JOIN Record R ON R.PostID = P.ID
ORDER BY R.ID ASC

Record 테이블은 읽는 순서를 기록하므로 Record 테이블의 순서에 따라 정렬이 필요합니다

는 아이디어를 제공할 수 있습니다. in을 사용하여 데이터베이스에서 데이터를 검색하고 map을 사용하여 해당 관계를 설정합니다. map.put(postid, post). 그런 다음 ID 순서대로 꺼내서 필요한 데이터 유형을 조립하세요

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.