-5

例:

ID  catID
1     3
2     2
3     3
4     1
5     3
6     3
7     3
8     1
9     3

select * from tbl where ID=5

レコード 1,3,6,7 を選択するにはどうすればよいですか? これは時間がかかるものですか、つまりクエリ/サブクエリですか?

現在、私はセット全体を選択してからサーバースクリプトでソートしています。そのため、mysqlで5つのレコードを選択できるかどうかを尋ねています...または気にしないでください

ありがとう

4

2 に答える 2

1

レコードが ID 順に並べられている場合、次のようなクエリを使用できます。

(SELECT *
FROM yourtable
WHERE ID<5 AND catID=(SELECT catID FROM yourtable WHERE ID=5)
ORDER BY ID DESC
LIMIT 2)
UNION ALL
(SELECT *
FROM yourtable
WHERE ID>5 AND catID=(SELECT catID FROM yourtable WHERE ID=5)
ORDER BY ID
LIMIT 2)

ここでフィドルを参照してください。

于 2013-05-20T22:55:40.627 に答える
0
select * from tbl where catID = 3;

それがあなたの質問に対する答えですか?

select *
from tbl
where  (0 < (id - x) and (id - x) <= 2)
    or (0 < (x - id) and (x - id) <= 2);
于 2013-05-20T22:39:09.053 に答える