gpt4 book ai didi

MySQL LEFT JOIN 不适用于多个表

转载 作者:行者123 更新时间:2023-11-30 01:30:23 26 4
gpt4 key购买 nike

我知道网络上有很多相关问题,并且,第一个答案是 GOOGLE 一下,我不需要第一个答案,因此感谢每个人,第二个答案将不胜感激。

我有 4 张 table :

Payment, InvoiceItem , User, Items

关系:

Payment.InvoiceItem_Id <-> InvoiceItem.InvoiceItemId

Payment.User_Id <-> User.UserID

InvoiceItem.Item_Id <-> Items.ItemsId

Payment.InvoiceItem_Id 为 NULLABLE,因此我的付款没有 InvoiceItems

查询是:

 
SELECT
Payment.Id,
Payment.User_Id,
Payment.InvoiceItem_Id,
User.Name,
Items.Name
FROM
Payment
LEFT OUTER JOIN
InvoiceItem ON Payment.InvoiceItem_Id = InvoiceItem.InvoiceItemId
INNER JOIN
User ON Payment.User_Id = User.UserID
INNER JOIN
Items ON InvoiceItem.Items_Id = Items.ItemsId
WHERE Payment.User_Id = 724;

如果我将第三个 INNER JOIN 更改为 LEFT OUTER,我将拥有付款中的所有记录,但我不知道为什么应该更改它,因为第三个 INNER JOIN 位于 InvoiceItem.Item_Id <-> 之间Items.ItemsId 和查询应该是 INNER JOIN 这些到表。

提前致谢。

最佳答案

因为一旦您离开了发票的外部连接,对发票项目执行内部连接需要所有发票项目都存在,从而有效地击败了发票上的左连接。

关于MySQL LEFT JOIN 不适用于多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17548567/

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