【发布时间】:2019-09-15 23:30:18
【问题描述】:
我在尝试在我的一个子查询中使用 LIMIT 时遇到了一些困难,我遇到了错误
MariaDB doesn't yet support 'LIMIT in subquery'
关于一个类似于我在 PostgreSQL 中所做的查询,以便为每个有孩子的父母获得 3 个孩子结果
select * from parent
join child on child.ch_pa_id = parent.pa_id
and child.ch_id in (
select child.ch_id from child
where child.ch_id = parent.pa_id
limit 3
)
order by parent.pa_id;
我看到这里有一个关于同一件事的问题
MySQL - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
这个问题有答案,但我无法让它满足我的需要,主要是因为我需要通过连接逐行完成,我尝试将同样的事情应用于我的查询,但我不确定如何保持连接工作
select * from parent as p
join (
select * from child
where child.ch_pa_idno = p.pa_idno # this line breaks it
limit 3
) as c on c.ch_pa_id = p.pa_id
order by p.pa_id;
p.pa_idno 是一个未知列会给出错误,我确定我是个白痴,这里有明显的问题
示例
这是一个使用 PostgreSQL http://sqlfiddle.com/#!17/4ed4d/2 完成的工作示例。它只返回两个父记录,对于每个父记录,它只返回 2 个子记录
【问题讨论】:
-
没有
ORDER BY的LIMIT可能会导致随机结果。 -
true 但在这种情况下顺序并不重要,因为它只是一个示例
标签: mysql subquery mariadb limit greatest-n-per-group