gpt4 book ai didi

mysql - SQL语句仅获取表的最新连接条目

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

抱歉,这个标题不好,我想不出更好的标题了......

我只是需要一些帮助来制定 SQL 语句。不幸的是我的 SQL 有点生疏了。我附上了我的情况的简化示例(ER-模型)。

enter image description here

正如你所看到的,我有 4 张 table 。客户、产品、许可证和支持。许可证始终针对特定产品颁发并分配给特定客户。客户可以持有一个或多个许可证。最初,我只想要“客户”、“产品”和“许可证”表的组合信息。到目前为止一切顺利,这很容易,我只需要要求

SELECT * 
FROM Customers,
Product,
Licenses
WHERE Customers.CustomerID = Licenses.CustomerID
AND Product.ProductID = Licenses.ProductID

但现在我还需要从支持表中添加一些数据。我希望对于前一个声明中的每个条目(对于每个许可证),现在还需要与相应许可证 key 绑定(bind)的最后支持案例(如果有)的描述和日期(每个许可证仅最后一个)许可证 key 并非全部)。 SupportID 是一个连续的数字,因此可以按该数字进行排序。

我知道我也可以在我的应用程序中询问所有案例并过滤收到的日期,但不幸的是网络流量应保持在最低限度。

帮助我欧比旺·克诺比..你是我唯一的希望...

最佳答案

执行LEFT JOIN以防万一没有许可证的支持案例。

NOT EXISTS 仅用于返回支持案例,但同一许可证不再有后续案例。

SELECT * 
FROM Customers c
JOIN Licenses l ON c.CustomerID = l.CustomerID
JOIN Product p ON p.ProductID = l.ProductID
LEFT JOIN Support s1 ON s1.LicenseKey = l.LicenseKey
WHERE NOT EXISTS (select 1 from Support s2
where s2.LicenseKey = s1.LicenseKey
and s2.Date > s1.Date)

注意:现在是现代显式 JOIN 语法。更容易编写(没有错误),更容易阅读,并且在需要时更容易转换为外连接。

关于mysql - SQL语句仅获取表的最新连接条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33774402/

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