首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用join和limit的postgresql查询

使用join和limit的postgresql查询
EN

Stack Overflow用户
提问于 2013-02-17 00:58:37
回答 1查看 96关注 0票数 0

我有一份桌子礼物。Gift可以通过一个表关联拥有多个gift_images。我正在尝试返回至少有一个gift_images关联的具有特定隐私级别的有限#礼物。

本质上,我想返回: gift条目和它的第一个关联的gift_image (gift_image应该按照它拥有的位置值排序,位置1是第一个)。没有关联gift_image的礼物应该被忽略。

这就是我所拥有的,但它肯定不起作用。

代码语言:javascript
复制
SELECT gifts.* FROM gifts LEFT JOIN gift_images ON gifts.id = gift_images.gift_id WHERE gifts.privacy = 2 ORDER BY gift_images.position ASC LIMIT 10

有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-17 01:12:49

如果你想忽略没有图片的礼物,你应该使用INNER JOIN而不是LEFT JOIN。此外,为了使查询有意义,除了从gift中选择字段之外,还应该从gift_images中选择一些字段。

如果所有具有礼物图像的礼物都有一个position = 1的图像,则此查询应执行以下操作:

代码语言:javascript
复制
SELECT gifts.*, gift_images.*
FROM gifts
INNER JOIN gift_images
ON gifts.id = gift_images.gift_id
WHERE gifts.privacy = 2
AND gift_images.position = 1
LIMIT 10

否则,您可以尝试

代码语言:javascript
复制
SELECT gifts.*, gift_images.*
FROM gifts
INNER JOIN (SELECT gift_id, MIN(position) AS min_position
            FROM gift_images
            GROUP BY gift_id) AS positions
ON positions.gift_id = gifts.id
INNER JOIN gift_images
ON gift_images.gift_id = gifts.id
AND gift_images.position = positions.min_position
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14912773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档