Как наложить ограничение на левое соединение для запроса с несколькими левыми объединениями, которые зависят друг от друга? См. Комментарий ниже по ПРЕДЕЛУ:
SELECT
a.*,GROUP_CONCAT(c.body SEPARATOR ' ') AS bodies
FROM a
LEFT JOIN b ON b.id_a=a.id
LEFT JOIN c ON c.id=b.id_c LIMIT 5 # LIMIT 5 Here Does Not Work
WHERE ...
Пример набора данных ...
DROP TABLE IF EXISTS `a`;
CREATE TABLE `a` (
`id` int(11) NOT NULL
);
-- Contains relationship between a and c
DROP TABLE IF EXISTS `b`;
CREATE TABLE `b` (
`id_a` int(11) NOT NULL,
`id_c` int(11) NOT NULL
);
-- Contains body contents
DROP TABLE IF EXISTS `c`;
CREATE TABLE `c` (
`id` int(11) NOT NULL,
`body` varchar(2000) NOT NULL
);
-- ----------------------------
-- Sample Records
-- ----------------------------
INSERT INTO `a` VALUES ('1');
INSERT INTO `b` VALUES
('1','1'), ('1','2'), ('1','3'),
('1','4'), ('1','5'), ('1','6'),
('1','7'), ('1','8'), ('1','9'),
('1','10');
INSERT INTO `c` VALUES
('1','aa'),('2','bb'), ('3','cc'),
('4','dd'), ('5','ee'), ('6','ff'),
('7','gg'), ('8','hh'), ('9','ii'),
('10','jj');
... и SQLFiddle на http://sqlfiddle.com/#!9/c1822/12
Также здесь есть перезапись подзапроса, которую я пробовал, но она не работает, потому что внешняя таблица не доступна из вложенного подзапроса и завершается с «неизвестным столбцом a.id в предложении where»: http://sqlfiddle.com/#!9/c1822/3
Также здесь есть подзапрос find_in_set rewrite http://sqlfiddle.com/#!9/2d43bb/1, который работает, но слишком медленно с большими наборами данных.