我有这个查询:
$sql = "SELECT a.id,b.*,c.*
FROM table1 a
left join table2 b on a.id=b.id1
left join table3 c on a.id = c.id2
WHERE b.field='name' and a.id=$id
GROUP BY c.id";
问题是,从table3
(或table c
)开始,我在该条件下有 5 个匹配行(a.id = c.id2)
在最终结果中,我只从其中一个匹配行中获得信息。我的GROUP BY
子句应该是什么,这样我才能从table c
的所有 5 个匹配行中获取数据,而不仅仅是从第一个匹配行获取数据?
试试这个:
$sql = "SELECT a.id, b.*, c.* FROM table1 a
LEFT JOIN table2 b ON a.id=b.id1
LEFT JOIN table3 c ON a.id = c.id2
WHERE b.field='name' and a.id=$id
GROUP BY a.id, c.id";
它将对具有相同对(a.id、c.id)的结果进行分组。