【发布时间】:2013-05-06 20:18:11
【问题描述】:
我有两张表,需要合并,它们是:
CREATE TABLE IF NOT EXISTS `legacy_bookmarks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` text,
`title` text,
`snippet` text,
`datetime` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `datetime` (`datetime`),
FULLTEXT KEY `title` (`title`,`snippet`)
)
还有:
CREATE TABLE IF NOT EXISTS `legacy_links` (
`id` mediumint(11) NOT NULL AUTO_INCREMENT,
`user_id` mediumint(11) NOT NULL,
`bookmark_id` int(11) NOT NULL,
`status` enum('public','private') NOT NULL DEFAULT 'public',
UNIQUE KEY `id` (`id`),
KEY `bookmark_id` (`bookmark_id`)
)
如您所见,“legacy_links”包含“legacy_bookmarks”的 ID。基于这种关系,我可以将两者合并吗?
我可以轻松地将“legacy_bookmarks”中的 ID 列的名称更改为“bookmark_id”,如果这样更容易的话。
您知道,列的顺序及其类型必须准确,因为此组合表中的数据随后将被导入到新的“书签”表中。
另外,我需要能够包含其他列(“修改”列,填充“日期时间”值),并更改我所拥有的列的顺序。
有接受者吗?
【问题讨论】:
-
您想将这些合并到一张表中吗?
-
当然你可以在这里建立关系,但通常
bookmark_id应该是legacy_bookmarks的外键。但即使没有它你也可以合并它们 - SELECT b.* FROMlegacy_bookmarksb JOINlegacy_linksl ON l.bookmark_id = b.id; -
“修改”栏目见link
-
是的,列的顺序和类型必须准确,因为该表中的数据随后将被导入到新的“书签”表中。
标签: mysql