gpt4 book ai didi

mysql - 在 MySQL 查询中多次从另一个表加入

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

我正在尝试对同一个 MySQL 表执行多个连接,但没有得到我期望的结果。希望有人能指出我的错误。

Table 1 -  cpe Table

|id | name
|----------
| 1 | cat
| 2 | dog
| 3 | mouse
| 4 | snake
-----------

Table 2 - AutoSelect

|id | name | cpe1_id | cpe2_id | cpe3_id |
|-----------------------------------------------
| 1 | user1 | 1 | 3 | 4 |
| 2 | user2 | 3 | 1 | 2 |
| 3 | user3 | 3 | 3 | 2 |
| 4 | user4 | 4 | 2 | 1 |
------------------------------------------------

我想看到输出

user1 | cat   | mouse  |  snake  |
user2 | mouse | snake | dog |
..etc

这是我尝试过的

SELECT * FROM AutoSelect
LEFT JOIN cpe ON
( cpe.id = AutoSelect.cpe1_id ) AND
( cpe.id = AutoSelect.cpe2_id ) AND
( cpe.id = AutoSelect.cpe3_id )

我得到空白结果。我以为我知道如何进行这些连接,但显然当我试图将 cpe?_id 与 cpe 表的名称匹配时。

在此先感谢您的帮助。

最佳答案

您还需要 3 次左连接。目前,您的查询仅加入 1 次,有 3 条关于加入的条件。这应该做:

SELECT a.name, cpe1.name, cpe2.name, cpe3.name FROM AutoSelect as a
LEFT JOIN cpe as cpe1 ON ( cpe1.id = a.cpe1_id )
LEFT JOIN cpe as cpe2 ON ( cpe2.id = a.cpe2_id )
LEFT JOIN cpe as cpe3 ON ( cpe3.id = a.cpe3_id )

而且您的意思可能是 INNER JOIN 而不是 LEFT JOIN,除非您的 AutoSelect 表中允许 NULL 值。

关于mysql - 在 MySQL 查询中多次从另一个表加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8040097/

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