我有以下表格:
文章:
| id (pk) | title |
|---------|---------|
| 1 | title 1 |
| 2 | title 2 |
图片:
| id (pk) | post_id (fk) | display_order | image_path |
|---------|--------------|---------------|------------|
| 1 | 1 | 1 | image1.jpg |
| 2 | 1 | 2 | image2.jpg |
| 3 | 1 | 0 | image3.jpg |
| 4 | 2 | 1 | image4.jpg |
| 5 | 2 | 1 | image5.jpg |
| 6 | 2 | 2 | image6.jpg |
我想检索一个帖子列表,每个帖子包含基于display_order
的图像中的第一个项目。
所需的结果如下所示:
| id | title | thumb_path |
|----|---------|------------|
| 1 | title 1 | image3.jpg |
| 2 | title 2 | image4.jpg |
我该怎么做?
2条答案
按热度按时间e5nszbig1#
一个 * 经典 * 的PostgreSQL解决方案是
distinct on
子句。每个
post_id
的 * 第一 * 行是用order by
定义的剩下的就是简单的
join
zzoitvuj2#
使用横向联接只能获取相关表中的一行。例如: