2014-01-26 23 views
0

我需要在mySql的3个不同的表中更新4个具有相同名称的列。有没有一种安全的方法来做到这一点,而不是运行3种不同的陈述?如何更新单个SQL语句中3个不同表中的4列?

有点像update tablea, tableb, tablec set name='x', preferences = 0 etc where id = 5;可能。

表格是不同的,但列名是相同的。

+2

既然你想这样做,也许你应该看看你的数据库设计。在多个地方存储相同的东西是一个坏主意。 –

+0

为什么只是一个声明? 3个陈述有什么问题?你使用非事务性存储引擎吗? –

回答

1

如果您有4个表都带有一个名为value1的字段,那么您可以使用单个查询更新所有4个表。我不知道技术上是否会更有效率,但这是可能的。下面,我成立了中提到的表,然后设置了多个不同的表值1的等于9,如果它们不等于9

假设我们建立这个模式:

CREATE TABLE table1 
    (
    value1 int 
); 
CREATE TABLE table2 
    (
    value1 int 
); 
CREATE TABLE table3 
    (
    value1 int 
); 
CREATE TABLE table4 
    (
    value1 int 
); 
INSERT INTO table1 
VALUES(1); 
INSERT INTO table2 
VALUES(2); 
INSERT INTO table3 
VALUES(3); 
INSERT INTO table4 
VALUES(4); 

您可以更新多个与表如下:

UPDATE table1, table2 
SET table1.value1 = 9, table2.value1 = 9 
WHERE table1.value1 != 9 OR table2.value1 != 9 

SQLfiddle:http://sqlfiddle.com/#!2/3064f/5

除非你指的是通过一些服务器边L SQL的执行anguage:

mysqlQuery("SELECT * from table1; SELECT * from table2; SELECT * from table3"); 

我敢肯定:

mysqlQuery("SELECT * from table1"); 
mysqlQuery("SELECT * from table2"); 
mysqlQuery("SELECT * from table3"); 

这正好可以作为写。希望有所帮助!

编辑:添加SQLfiddle

相关问题