来自另一个表的MYSQL引用表

时间:2014-09-05 18:23:00

标签: mysql sql

我是SQL的新手。作为一个例子是我的主要表格:

CREATE TABLE IF NOT EXISTS `main`.`item` (
  `item_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'auto incrementing item_id of each job, unique index',
  `item_title` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'item title, not-unique',
  `item_status`
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='item data';

我的参考表:

CREATE TABLE IF NOT EXISTS `main`.`status` (
  `status_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'auto incrementing status_id of each status, unique index',
  `status_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'status name, unique',
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='status';

如何将主表引用到状态表的ID,因此存在与主项关联的状态。

此外,由于这是我的第一个数据库,如果我犯了其他任何错误,请随时突出显示。

2 个答案:

答案 0 :(得分:2)

您的主表应该有一个status_id列。该列应指定为外键,并链接到状态表的主键。

这将使主表的item_status列不再必要。使用主表中的status_id值在前端查找状态表的主键。

答案 1 :(得分:0)

简单:

SELECT * FROM main.item, main.status 
           where main.item.item_status = main.status.status_id

这会将item的所有行与来自status的所有行(其中包含匹配的ID)相连接。如果表item_status中未知status,则不会显示任何行!

您应该只保留表item_status的最后一次创建。