gpt4 book ai didi

mysql left join by max autoincrement id?

转载 作者:行者123 更新时间:2023-11-30 22:22:59 25 4
gpt4 key购买 nike

A) users

B) subscribtion

C) package information

我有表,其中 BAC 之间的链接,从 A 中选择的查询其中 B 具有 A 的行 ID,并通过 B id 加入 C


完整示例:

SELECT a.*,c.packageTitle
FROM users AS a
LEFT JOIN subscribe AS b ON (b.userid = a.userid)
LEFT JOIN package AS c ON (b.packageid = c.packageid)

如果用户在 C 中有多个订阅,我的问题是,我无法在循环查询中获取最新的订阅行,我还在 中使用了 MAX(c.packageid) SELECT 也失败了。


Goal : get latest record in B assigned by A id .

非常感谢任何建议

最佳答案

我认为您尝试使用 MAX() 来获取具有最新包 ID 的记录(假设此 ID 是一个递增的自动递增列),这并不遥远。在我下面的回答中,子查询使用 GROUP BY 为每个用户记录识别最新的包 ID。然后使用此子查询从您的原始查询中过滤出正确的记录。

SELECT a.userid, b.*
FROM users AS a
LEFT JOIN subscribe AS b
ON b.userid = a.userid
LEFT JOIN package AS c
ON b.packageid = c.packageid
INNER JOIN
(
SELECT a.userid, MAX(c.packageTitle) AS maxPackageTitle
FROM users AS a
LEFT JOIN subscribe AS b
ON b.userid = a.userid
LEFT JOIN package AS c
ON b.packageid = c.packageid
GROUP BY a.userid
) t
ON a.userid = t.userid AND c.packageTitle = t.maxPackageTitle

请注意,此查询将极大地受益于称为公用表表达式 (CTE) 的东西,它在其他 RBDMS(例如 SQL Server 和 Oracle)中可用。 CTE 将使查询的重复性大大降低,可读性更高。

关于mysql left join by max autoincrement id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157570/

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