获取事物子列表的最佳方法是什么?
我有两个表:
create table A (
id int primary key
)
create table B (
id int primary key,
aid int foreign key references A( id ),
sort_key int
)
我想获得对象 A 的列表,以及子对象 B,但只有 B 的前五个。
假设 A 是人,B 是食物类型,sort_key 是一个人对该食物的喜爱程度。我如何获得每个人(或某些人)及其最喜欢的 5 种食物?
最佳答案
在前面的评论中,如果它是 INT,则不能在其中放置非数字。
假设以下数据:
a
--
id
1
2
3
b
------------------------
id aid sort_key
1 1 1
2 1 2
3 2 1
4 3 1
5 1 3
6 1 4
7 1 5
8 1 6
9 2 2
10 2 3
MySQL 中的以下查询将为您提供:
SELECT a.*,
(SELECT GROUP_CONCAT(id) AS ids FROM b AS bi WHERE bi.aid = a.id ORDER BY sort_key LIMIT 5) AS ids
FROM a
结果:
id ids
1 1,2,5,6,7,8
2 3,9,10
3 4
关于sql - 获取列表的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1174482/