gpt4 book ai didi

mysql - 如何在SQL查询中对LEFT JOIN(多个表)进行排序?

转载 作者:行者123 更新时间:2023-11-29 16:01:22 29 4
gpt4 key购买 nike

发现一个非常相似的帖子,我随后就看到了。 how to sort order of LEFT JOIN in SQL query?但我的分布在几张 table 上。

Accounts
acc_id | salesRank | reg_date
1 | 50 | 2018-01-01 07:01:01
2 | 20 | 2019-02-01 07:01:01

Catalogue
cat_id | product_name | brand
1 | torch | Dewalt
2 | MacBook | Apple
3 | Phone | Samsung

Inventory
inv_id | cat_id | acc_id | salePrice | stock
1 | 1 | 1 | 999 | 6
2 | 1 | 2 | 499 | 2

这是我到目前为止所知道的:

 SELECT c.cat_id, c.product_name, c.brand, a.salePrice,
MATCH(c.product_name) AGAINST('+dewalt' IN BOOLEAN MODE) AS relevancy,
(a.salesRank + i.stock) AS sellersRankTotal
FROM catalogue AS c
JOIN inventory AS i ON c.cat_id = i.cat_id
JOIN accounts AS a ON i.acc_id = a.acc_id

WHERE ... GROUP BY c.cat_id ORDER BY relevancy DESC

我知道如何需要从 2 个表的 2 个值组合中获取 MAX() sellersRank。

我搜索的结果是排名最高的卖家(销售排名+库存),获得搜索结果中显示的价格。

 product_name | brand  | acc_id | cat_id | price | sellersRankTotal
torch | Dewalt | 1 | 1 | 999 | 56 (SalesRank + Stock)

我只能假设亚马逊也有类似的概念。显示的价格并不总是最便宜的,但具有一定排名的卖家的价格会显示在其列表中。

希望这是有道理的,问候

最佳答案

听起来您只是想以不同的方式控制排序顺序,尽管我不能 100% 确定您是否意味着 sellersRankTotal 和相关性以某种方式组合。有多少个源表并不重要。如果它们以新关系连接在一起,您可以按属于该结果集的任何列(或可用于创建计算列的任何表达式)进行排序。

如果您只想按“a.salesRank + i.stock”(您已为其指定别名“sellersRankTotal”的表达式)进行排序,那么只需添加该 order by 子句(假设您想首先按相关性排序然后按 sellersRankTotal):

SELECT c.cat_id, c.product_name, c.brand, a.salePrice,
MATCH(c.product_name) AGAINST('+dewalt' IN BOOLEAN MODE) AS relevancy,
(a.salesRank + i.stock) AS sellersRankTotal
FROM catalogue AS c
JOIN inventory AS i ON c.cat_id = i.cat_id
JOIN accounts AS a ON i.acc_id = a.acc_id

WHERE ... GROUP BY c.cat_id ORDER BY relevancy DESC, sellersRankTotal DESC

关于mysql - 如何在SQL查询中对LEFT JOIN(多个表)进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56175105/

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