ホームページ >バックエンド開発 >PHPチュートリアル >ヘルプ: mysql は指定された ID 順序に基づいてどのように結果を見つけますか?
親愛なるマスターの皆さん、今私は問題に遭遇したので、あなたの助けが必要です。
投稿テーブル:記事テーブルの2つのテーブルがあります。
レコードテーブル: ユーザーの読書順序を記録するために使用されるレコードテーブル。
ここで、レコードテーブルの postid に基づいて post テーブル内の記事を検索する必要があります。 (読む順序は「第 1 条、第 2 条、第 2 条、第 3 条、第 3 条」で繰り返し記事を許可するとします。)
私は
から始めました。
リーリー
現在必要なビジネス ロジックは次のとおりです:
1: ユーザーの読書記録に基づいて、投稿テーブル内の記事を検索します。
2: 重複は許可されます。
注: FOR ループの使用を検討してください
リーリー
でも効率が心配です。返信内容:
投稿テーブル:記事テーブルの2つのテーブルがあります。
レコードテーブル: ユーザーの読書順序を記録するために使用されるレコードテーブル。
レコードテーブルはフィールドpostidを使用して、ユーザーが記事を読んだ順序に従って投稿テーブルの主キーIDを記録します。つまり、record.postidの外部キーはpost.idです。
ここで、レコードテーブルの postid に基づいて post テーブル内の記事を検索する必要があります。 (読む順序は「第 1 条、第 2 条、第 2 条、第 3 条、第 3 条」で繰り返し記事を許可するとします。)
私は から始めました。
リーリー
検索結果では、postid1、postid2、postid3 の記事のみが見つかります。
現在必要なビジネス ロジックは次のとおりです:
1: ユーザーの読書記録に基づいて、投稿テーブル内の記事を検索します。2: 重複は許可されます。
例えば、ユーザーが読んだ記事の閲覧順が「記事1、記事2、記事2、記事3、記事3」だった場合、postテーブルの検索結果は、post.id1、postとなります。 .id2、post.id2、post.id2、post.id3。
注: FOR ループの使用を検討してください
リーリーでも効率が心配です。
投稿 P から P.*
を選択
LEFT JOIN Record R ON R.PostID = P.ID
R.ID ASC で注文
Recordテーブルは読み取り順序を記録するため、Recordテーブルの順序に従ってソートする必要があります
これはアイデアを提供します。in を使用してデータベースからデータを取得し、map を使用して対応する関係を確立します。map.put(postid, post)。あとはID順に取り出して必要なデータ型を組み立てます