gpt4 book ai didi

sql - 在 postgresql 中加入两个单独的查询...查询...(可能或不可能)

转载 作者:数据小太阳 更新时间:2023-10-29 08:47:54 26 4
gpt4 key购买 nike

我在 Returning the first X records in a postgresql query with a unique field 得到了一些很好的帮助我遇到了一个问题,目前正在尝试尽可能多地进行优化(虽然我通常不喜欢预先加载优化,但这是一种独特的情况)。

想象一个应用中的三个实体:

User
Post
Instance # An instance is just a reference to a post

字段看起来像这样:

User
id
Post
id
user_id
name
Instance
id
user_id
post_id
helped_by_user_id

要求:

返回 10 个实例,其中:

  1. user_id 不等于 3
  2. post_id 是唯一的
  3. 没有其他实例的 post_id 和 helped_by_user_id 为 3

编辑:

我在 http://sqlfiddle.com/#!10/7a324/1/0 处为此创建了一个 SQLFiddle .

郑重声明,我使用的是 Ruby 1.9.3、Rails 3.2.13 和 Postgresql (Heroku)

最佳答案

是的,所以您想要由 $user 以外的其他人撰写的帖子,其中没有出现 $user 的“实例”(似乎表示“回复”)。您希望从这个集合中选择十个不同的帖子。

如果这是问题的准确框架,那么这就是您想要的:

SELECT *
FROM posts p
WHERE p.user_id <> 3
AND NOT EXISTS (
SELECT 1
FROM instances i
WHERE i.post_id = p.id
AND i.helped_by_user_id = 3
)
ORDER BY p.id
LIMIT 10;

总的来说,感觉这里的问题是问题没有真正被清楚地框起来。通常,如果你能用清晰的英语说出你想从数据集中得到什么,那么将它翻译成有用的 SQL 就很容易了。

关于sql - 在 postgresql 中加入两个单独的查询...查询...(可能或不可能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21925712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com