gpt4 book ai didi

MySQL - 同一张表上的多个 JOIN

转载 作者:行者123 更新时间:2023-11-29 06:00:19 24 4
gpt4 key购买 nike

我有下面给出的表 foo1

foo1

 +----+---------+-----------------+----------------+-------------------+---------------------+
| Id | OrderId | OrderNote | SentSalesmanId | OrderedSalesmanId | ConfirmedSalesmanId |
+----+---------+-----------------+----------------+-------------------+---------------------+
| 2 | 1 | important order | 1 | 2 | 3 |
+----+---------+-----------------+----------------+-------------------+---------------------+

和包含 Id、代码和名称的销售员表。

推销员

+----+-------+-------+
| Id | Code | Name |
+----+-------+-------+
| 1 | S1001 | N1001 |
+----+-------+-------+
| 2 | S1002 | N1002 |
+----+-------+-------+
| 3 | S1003 | N1003 |
+----+-------+-------+

正如您在表 foo1 中看到的,有 3 列(SentSalesmanId、OrderedSalesmanId 和 ConfirmedSalesmanId)与 salesman 表相关。

这是我的问题

SELECT
f.Id,
f.OrderId,
f.OrderNote,
s1.Code AS SentSalesmanCode,
s2.Code AS OrderedSalesmanCode,
s3.Code AS ConfirmedSalesmanCode
FROM
foo1 f
INNER JOIN salesman s1 ON (s1.Id = f.SentSalesmanId)
INNER JOIN salesman s2 ON (s2.Id = f.OrderedSalesmanId)
INNER JOIN salesman s3 ON (s3.Id = f.ConfirmedSalesmanId);

这是我的预期输出

+----+---------+------------------+------------------+---------------------+-----------------------+
| Id | OrderId | OrderNote | SentSalesmanCode | OrderedSalesmanCode | ConfirmedSalesmanCode |
+----+---------+------------------+------------------+---------------------+-----------------------+
| 2 | 1 | important order! | S1001 | S1002 | S1003 |
+----+---------+------------------+------------------+---------------------+-----------------------+

这个查询给出了我想要的,但是对于大数据来说它运行缓慢。我必须使用 JOIN 三次到 salesman 表吗?我不能用一个 JOIN 来写它吗?或者有什么更有效的方法吗?

谢谢。

最佳答案

您的查询没有问题。这应该很快。如果速度变慢,您可能需要确保您的表已正确编制索引。

SHOW INDEX FROM foo1
SHOW INDEX FROM salesman

如果您可以将它们添加到您的问题中,将会很有帮助。然后我们将有 # 行和所涉及字段的基数。

关于MySQL - 同一张表上的多个 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45589110/

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