gpt4 book ai didi

mysql - 如何使用一个表中的某一列两次,以显示另一表中两个外键列的关联值?

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

我有一张这样的表:

Id(整数),命令(文本),...

另一个这样的:

命令 id fk (int),子命令 id fk (int),...

第二个表中显示的两列只是第一个表中 id 列的外键。

我想进行一个查询,显示第二个表的两列,但替换为第一个表中命令列的值(文本值)。我如何在 MySQL 中执行此操作?

如果这个问题令人困惑或提出错误,我们深表歉意。

最佳答案

一些示例数据和术语会很有用。但是,由于您的示例表缺少这些,所以让我们分配一些。

假设这是 command 表,其中包含字段 id、command 和数据

id | command
------------
1 | CREATE
2 | USE
3 | DESTROY

以及 assoc 表,其中包含字段 cmd_id、sub_id(简洁明了)和数据

cmd_id | sub_id
---------------
1 | 2
2 | 3

然后,您将获得每个命令和子命令的文本内容列表,例如

SELECT cmd1.command AS cmd, cmd2.command AS sub
FROM assoc a, command cmd1, command cmd2
WHERE a.cmd_id = cmd1.id
AND a.sub_id = cmd2.id

这会导致

cmd       | sub
-------------------
CREATE | USE
USE | DESTROY

此结果是通过组合所有指定 FROM 表的所有行,然后从这些组合行中选取与所有 匹配的请求的 SELECT 数据来构造的。 >WHERE 标准。这些组合行看起来像

(a)          | (a)          | (cmd1)     | (cmd1)          | (cmd2)     | (cmd2)
assoc.cmd_id | assoc.sub_id | command.id | command.command | command.id | command.command
----------------------------------------------------------------------------------------
1 | 2 | 1 | CREATE | 1 | CREATE
1 | 2 | 1 | CREATE | 2 | USE
1 | 2 | 1 | CREATE | 3 | DESTROY
...

等,包含所有可能的组合。为了澄清起见,括号中的标签是我在查询中使用的表别名。正如您所看到的,中间行是与我的查询匹配的示例,因此该行中的“CREATE”和“USE”将在最终结果集中使用。

关于mysql - 如何使用一个表中的某一列两次,以显示另一表中两个外键列的关联值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33159646/

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