gpt4 book ai didi

mysql - 查询无法与 LEFT JOIN (MySQL) 一起正常工作

转载 作者:行者123 更新时间:2023-11-29 02:40:50 24 4
gpt4 key购买 nike

我仍然在为这个问题苦苦挣扎(我之前的帖子是关于那个的,并且由于我更改了表参数,我遇到了另一个问题):

(有些列已经改变,所以这是一个不同的问题/问题,因为我只有 id 作为字段来获取最后的插入)

表格产品:

id  name
1 TV
2 RADIO
3 COMPUTER

表 sales(product_id 是指产品的 FK):

id_sales    feedback    product_id
4 GOOD 2
5 GOOD 3
6 NICE 3

我正在使用的查询:

SELECT products.name, sl.feed 
FROM products LEFT JOIN (
SELECT product_id, max(id_sales), feedback AS feed FROM sales GROUP BY product_id) sl
ON products.id = sl.product_id

结果是:

name         feed   
TV NULL
RADIO GOOD
COMPUTER GOOD

它适用于电视和广播,但在计算机列中,我必须显示最后的反馈,您可以看到它是“NICE”,而不是“GOOD”!以某种方式使用 SQL 函数 MAX(id_sales) 并不是我认为的解决方案。我在这里缺少什么?

最佳答案

最好的方法是 row_number(),但它可能不可用。因此,您可以在 ON 子句中过滤最近的日期:

SELECT p.name, sl.feed 
FROM products p LEFT JOIN
sales s
ON p.id = s.product_id AND
s.id_sales = (SELECT MAX(s2.id_sales) FROM sales s2 WHERE s2.product_id = s.product_id);

有其他方法可以表达这种逻辑。这种方法的一大优势是它可以最大限度地利用索引来提高性能。

关于mysql - 查询无法与 LEFT JOIN (MySQL) 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52523253/

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