ホームページ > バックエンド開発 > PHPチュートリアル > 同じ親 ID を持つ最大 3 つのレコードのフェッチに関する SQL

同じ親 ID を持つ最大 3 つのレコードのフェッチに関する SQL

WBOY
リリース: 2016-06-23 14:08:55
オリジナル
1018 人が閲覧しました

テーブル imginfo
ID fid miaoshu
1 3 aaaaaaa
2 3 sssssss
3 3 fffff
4 4 uuuuuuuu
5 5 gfgfgfgfgf
6 5 ddfdfdfd
7 9 d
8 9 dfdfdfd
9 9 dfdfdf
10 9 ポポポップ
11 3 tgtrtyrtyry
12 5 fdsjfdfdl

SELECT * FROM `imginfo` WHERE fid in(3,5,9) ORDER BY `id` DESC
上記ステートメントの fid 3,5,9 の内容をすべて取得します。

ここで、同じ fid を持つ最大 3 つの項目のみを取得したいのですが、順序は変更されません。 SQL ステートメントを記述するにはどうすればよいですか?
私にアドバイスを与え、専門家にアドバイスを求めてください。素晴らしい!


ディスカッションへの返信(解決策)

SQLを取り出して、php側でそれぞれの値を3つ取得すれば終わりではないでしょうか?

シーケンスの終了後に最初の 3 つの項目だけを取得したい場合は、limit0,3; を使用できます。


select a.* from imginfo a where 3 > (select count(*) from imginfo where fid = a.fid and id > a.id and fid in(3,5,9)) and fid in(3,5,9) order by a.fid,a.id
ログイン後にコピー
ログイン後にコピー

SQL ステートメントは次のとおりです。
select a.* from imginfo a where 3 > (fid = a.fid および id > a.id および fid in(3,5,9) の imginfo から count(*) を選択) および fid in(3,5,9) は a.fid,a で並べ替えられます。 id

ID で降順に並べ替えるだけの場合は、変更するだけです
select a.* from imginfo a where 3 > (select count(*) from imginfo where fid = a.fid and id > a.id and fid in(3,5,9)) and fid in(3,5,9) order by a.id desc

これができることを学びました。

学んだ!モデレータさん、ありがとうございました。


select a.* from imginfo a where 3 > (select count(*) from imginfo where fid = a.fid and id > a.id and fid in(3,5,9)) and fid in(3,5,9) order by a.fid,a.id
ログイン後にコピー
ログイン後にコピー

モデレーターに聞きたいのですが、項目数で並べ替えたい場合はどうすればよいですか?例えば、fidが3の場合は5つのエントリがあり、fidが9の場合は10のエントリがあり、fidが5の場合は3つのエントリがあります。ソートは9 3 5になります。実現する方法を教えてください。ありがとうございます

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート