gpt4 book ai didi

sql - 在一对多关系中按另一个表中的字段排序

转载 作者:行者123 更新时间:2023-11-29 14:37:44 25 4
gpt4 key购买 nike

我有两个表 - orderspayments 在 PostgreSQL 数据库中是一对多的关系。

我想通过 payments.status 订购 orders

尝试了以下查询:

SELECT DISTINCT ON (payments.id) orders.*
FROM orders
INNER JOIN payments ON orders.id=payments.order_id
ORDER BY payments.id, payments.status DESC

但是对于INNER JOIN,它将拒绝缺少payments的记录。

我也尝试过使用 OUTER JOIN 解决方案来做到这一点:

SELECT DISTINCT ON (payments.id) orders.*
FROM orders
LEFT OUTER JOIN payments ON orders.id=payments.order_id
ORDER BY payments.id, payments.status DESC

但它似乎也削减了一些不知道为什么的值(value)。

最佳答案

尝试以下操作:

SELECT col1, col2, col3, ... FROM
(
SELECT DISTINCT ON (orders.id) orders.*, payments.status payment_status
FROM orders
LEFT OUTER JOIN payments ON orders.id = payments.order_id
ORDER BY payments.create_ts DESC
) wrap
ORDER BY payment_status;

此处 payments.create_ts 按时间对付款进行排序。如果您的 id 单调递增,您可以改用它。

col1col2col3orders 表中的列——该列表包含所有列,但是不是payment_status

关于sql - 在一对多关系中按另一个表中的字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41933512/

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