テーブル 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