gpt4 book ai didi

MySQL将2个表中的数据合并到第3个表中

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

我目前有 2 个表:

CrawlData
id (autoincrement), Source, Destination, and some more columns

Nodes
id (autoincrement), URL

Nodes 表包含来自 CrawlData

的不同 Source 值

现在我想要一个表,它是一种查找表,其中包含来自节点的 ID,而不是来自 CrawlData

的源和目标中的文本

我可以通过在 URL=Source 和 URL=Destination 上使用 Join 的 Select 查询获取所有 ID,但不知道如何组合这些 ID,然后再将它们放入新表 Edges 有 2 列:

  • SourceNode(= 来自节点的 ID,其中 CrawlData.Source = URL)
  • DestinationNode(= 来自节点的 ID,其中 CrawlData.Destination = URL)

最佳答案

您可以使用 INSERT INTO...SELECT 语句INSERT SELECT 语句返回的记录。

INSERT INTO Edges(SourceNode, DestinationNode)
SELECT b.ID SourceNode,
c.ID DestinationNode
FROM CrawlData a
INNER JOIN Nodes b
ON a.Source = b.URL
INNER JOIN Nodes c
ON a.Destination = c.URL

要进一步了解有关联接的更多信息,请访问以下链接:

为了更快地执行,执行以下语句以在列上添加 INDEX 以避免 FULL TABLE SCAN,这在大型 RDBMS 上执行时可能会很慢。

ALTER TABLE Nodes ADD INDEX (URL);

如果 SourceDestination 列的所有值都出现在 Nodes.URL 上,则将这些列声明为外键,

ALTER TABLE CrawlData 
ADD CONSTRAINT cd_fk1 FOREIGN KEY (Source) REFERENCES Nodes(URL)
ALTER TABLE CrawlData
ADD CONSTRAINT cd_fk2 FOREIGN KEY (Destination) REFERENCES Nodes(URL)

否则,在它们上添加普通索引

ALTER TABLE CrawlData ADD INDEX (Source);
ALTER TABLE CrawlData ADD INDEX (Destination);

关于MySQL将2个表中的数据合并到第3个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683754/

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