MySQL:从其他表中检索id

时间:2013-02-28 11:09:15

标签: mysql

一个简单的MySQL问题:

我有两个名为“Interfaces”和“Switch”的表。

表格“切换”:

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放入“接口”表中的switch_id。

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

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

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

2 个答案:

答案 0 :(得分:0)

试试这个

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

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

答案 1 :(得分:0)

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

更好的方法是改变填充表格的方式。首先创建一个开关,使用last_insert_id()找出它的id,然后在添加接口的所有记录时将该值用作switch_id。然后你不必再回去修理 - 你从一开始就在正确的位置得到正确的值。