Mysql 如何一次在3个表中插入和更新数据

Mysql 如何一次在3个表中插入和更新数据,mysql,vb.net,visual-studio-2010,Mysql,Vb.net,Visual Studio 2010,顾客 电话号码 客户有电话号码 customers -> detailed customers.customer_id int(11) primary auto_increment customers.customer_name varchar(255) phonenumbers -> detailed phonenumbers.phonenumber_id int(11) primary auto_increment phonenumbers.phonenumber_type i

顾客 电话号码 客户有电话号码

customers -> detailed
customers.customer_id int(11) primary auto_increment
customers.customer_name varchar(255)

phonenumbers -> detailed
phonenumbers.phonenumber_id int(11) primary auto_increment
phonenumbers.phonenumber_type int(11)
phonenumbers.phonenumber_name varchar(255)
phonenumbers.phonenumber varchar(15)

customers_has_phonenumbers -> detailed
customers_has_phonenumbers.customer_id int(11) -> customers_customer_id
customers_has_phonenumbers.phonenumber_id int(11) -> phonenumbers_phonenumber_id
如何插入和更新电话号码


希望你们能帮上忙

查看上的多表语法。

插入新电话号码

insert into phonenumbers (phonenumber_type,phonenumber_name,phonenumber) values (1,'example name','example number');

insert into customers_has_phonenumbers (customers_customer_id,phonenumbers_phonenumber_id) values ((select customer_id from customers where customer_name = 'example customer name'),(select phonenumber_id from phonenumbers where phonenumber = 'example number');
insert into phonenumbers (phonenumber_type,phonenumber_name,phonenumber) values (1,'example name','new phone number');

update customers_has_phonenumbers set phonenumbers_phonenumber_id = (select phonenumber_id from phonenumbers where phonenumber = 'new phone number') where phonenumbers_phonenumber_id = (select phonenumber_id from phonenumbers where phonenumber = 'old phone number') and customers_customer_id = (select customer_id from customers where customer_name = 'example customer name');
更新电话号码

insert into phonenumbers (phonenumber_type,phonenumber_name,phonenumber) values (1,'example name','example number');

insert into customers_has_phonenumbers (customers_customer_id,phonenumbers_phonenumber_id) values ((select customer_id from customers where customer_name = 'example customer name'),(select phonenumber_id from phonenumbers where phonenumber = 'example number');
insert into phonenumbers (phonenumber_type,phonenumber_name,phonenumber) values (1,'example name','new phone number');

update customers_has_phonenumbers set phonenumbers_phonenumber_id = (select phonenumber_id from phonenumbers where phonenumber = 'new phone number') where phonenumbers_phonenumber_id = (select phonenumber_id from phonenumbers where phonenumber = 'old phone number') and customers_customer_id = (select customer_id from customers where customer_name = 'example customer name');
不知道你会如何处理客户名称相同的问题

如果合理的话,在phonenumber.phonenumber列上也应该有一个唯一的键。否则,应该在更新子选择中使用唯一标识phonenumbers行(除了phonenumbers.phonenumber\u id)的内容来检索phonenumbers.phonenumber\u id值。同一update语句中的customer子选择也是如此

此外,我不确定您在插入新电话号码时是否已经有客户行?如果没有,那么您必须在插入到customers\u has\u phonenumbers表之前插入newcustomers行


希望这有帮助。

我也有客户。客户id