2016-04-07 16 views
1

Diyelim ki, her gönderi için 3 son yorum kimliğine sahip gönderiler yüklemek istiyorum.Alt sorgudaki türetilmiş tablo ana tabloya erişemiyor

select id, (select group_concat(id) from 
    (select id from comments where post_id = posts.id 
    order by created_on desc limit 3) ids) 
from posts where id in (1,2,3) 

Ancak MySQL Unknown column 'posts.id' in 'where clause' ile bağırır: Doğal olarak bu sorguyu yazdım. Birleştirme, grup ve substring_index(group_concat(comments.id order by created_on DESC),",",2) ile çalışmayı başardım, ancak çok fazla yorum olduğunda çok yavaş.

Daha iyi bir seçenek var mı?

+0

sütun 'id'' posts' tablosunda var? – RomanPerekhrest

+0

@RomanPerekhrest, evet, elbette –

cevap

0

Türetilen tablosu olmaksızın sorgu yeniden olabilir:

select id, (select group_concat(id) 
    from comments where post_id = posts.id 
    order by created_on desc limit 3) 
from posts where id in (1,2,3) 
+0

Çalışmıyor. group_concat (id) ALL satırlarını alacak ve limit alakalı olmayacaktır. –

+0

'(1, 2, 3) sınırında 1,' belirtildiği yerlerden group_concat (id) öğesini seçin: "1,2,3" –

İlgili konular