0

一个简单的 MySQL 问题:

我有 2 个表,分别称为“接口”和“开关”。

表“开关”:

create table switch (
      name varchar(15), 
      swversion varchar(15), 
      bootversion varchar(15), 
      serialnumber varchar(30), 
      rootbridge varchar(10), 
      address varchar(20), 
      switch_id MEDIUMINT NOT NULL AUTO_INCREMENT, 
      PRIMARY KEY(switch_id));

表“接口”:

create table interfaces (
      port varchar(15), 
      type varchar(20), 
      duplex varchar(15), 
      speed varchar(5), 
      neg varchar(20), 
      flowctrl varchar(5), 
      linkstat varchar(5), 
      backpres varchar(20), 
      mdixmode varchar(5), 
      switch_id int(11), 
      PRIMARY KEY(port));

我想将“Switch”表中的 switch_id 获取到“Interfaces”表中的 switch_id 中。

在这个例子中:每个带有端口的交换机:“Switch2_...”应该得到 Switch_id:1”,“Switch5_...”应该得到 Switch_id:2,依此类推。

http://img51.imageshack.us/img51/4470/switchid.png

“Interfaces”中的 switch_id 应该使用“Switch”表中的 switch_id 自动更新

4

2 回答 2

0

试试这个

INSERT INTO Interfaces(switch_id)
SELECT switch_id
FROM Switch WHERE......

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

于 2013-02-28T11:14:07.230 回答
0

这将是模棱两可的——您有两个名为“switch2”的开关:id 值 1 和 4。那么您希望 id 1 或 id 4 与名为“switch2”的开关相关联吗?

更好的方法是让您更改填充表格的方式。首先创建一个交换机,使用 last_insert_id() 找出它的 id,然后在添加接口的所有记录时将该值用作 switch_id。然后,您不必稍后再返回修复问题 - 您从一开始就在正确的位置获得正确的值。

于 2013-02-28T11:17:13.140 回答