gpt4 book ai didi

sql - MySQL 到 PostgreSQL : GROUP BY issues

转载 作者:行者123 更新时间:2023-11-29 14:05:35 26 4
gpt4 key购买 nike

所以我决定试用 PostgreSQL 而不是 MySQL,但我遇到了一些轻微的转换问题。这是我的一个查询,它从四个表中抽取数据并将它们全部吐出到结果中。

我不知道如何在 PostgreSQL 中,特别是在 Django 中表达这一点,但我将把它留给另一个问题,所以如果你可以 Django-fy 就可以加分,但如果你只是纯 SQL 就不用担心。

SELECT links.id, links.created, links.url, links.title, user.username, category.title, SUM(votes.karma_delta) AS karma, SUM(IF(votes.user_id = 1, votes.karma_delta, 0)) AS user_vote
FROM links
LEFT OUTER JOIN `users` `user` ON (`links`.`user_id`=`user`.`id`)
LEFT OUTER JOIN `categories` `category` ON (`links`.`category_id`=`category`.`id`)
LEFT OUTER JOIN `votes` `votes` ON (`votes`.`link_id`=`links`.`id`)
WHERE (links.id = votes.link_id)
GROUP BY votes.link_id
ORDER BY (SUM(votes.karma_delta) - 1) / POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC
LIMIT 20

选择中的 IF 是我第一个麻烦开始的地方。似乎它是一个 IF true/false THEN stuff ELSE other stuff END IF 但我无法获得正确的语法。我尝试使用 Navicat 的 SQL 构建器,但它总是要我将我选择的所有内容放入 GROUP BY 中,我认为这是错误的。

总而言之,我要寻找的是使这个 MySQL 查询在 PostreSQL 中工作。谢谢。

目前的进展

只想感谢大家的帮助。这是我目前所拥有的:

SELECT links_link.id, links_link.created, links_link.url, links_link.title, links_category.title, SUM(links_vote.karma_delta) AS karma, SUM(CASE WHEN links_vote.user_id = 1 THEN links_vote.karma_delta ELSE 0 END) AS user_vote
FROM links_link
LEFT OUTER JOIN auth_user ON (links_link.user_id = auth_user.id)
LEFT OUTER JOIN links_category ON (links_link.category_id = links_category.id)
LEFT OUTER JOIN links_vote ON (links_vote.link_id = links_link.id)
WHERE (links_link.id = links_vote.link_id)
GROUP BY links_link.id, links_link.created, links_link.url, links_link.title, links_category.title
ORDER BY links_link.created DESC
LIMIT 20

我不得不更改一些表名,而且我仍在处理我的 ORDER BY,所以在那之前我们只能逃避。再次感谢!

最佳答案

看看这个链接GROUP BY

When GROUP BY is present, it is not valid for the SELECT list expressions to refer to ungrouped columns except within aggregate functions, since there would be more than one possible value to return for an ungrouped column.

您需要在分组依据中包含所有不属于聚合函数的选择列。

关于sql - MySQL 到 PostgreSQL : GROUP BY issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1864898/

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