2

我使用这个查询(插入到选择 3 个表中)将我的行插入到 mysql 表中。

"INSERT INTO test (catid_1, descat_1, catid_2, descat_2, id_user, user)
 SELECT '$_POST[cat_1]',t1.desc AS descat_1, '$_POST[cat_2]', t2.desc AS descat_2, 
 $_POST[id_user]',t3.user FROM t1, t2, t3 
 WHERE t1.idcat_1='$_POST[cat_1]' and t2.idcat_2='$_POST[cat_2]' 
 and t3.id_user='$_POST[id_user]'";

现在我想使用相同的逻辑来更新 mysql 表中的行(更新到选择 3 表)。

表结构

t1
`idcat_1` int(11) NOT NULL AUTO_INCREMENT,
`desc` varchar(100) NOT NULL,
PRIMARY KEY (`idcat_1`)

t2
`idcat_2` int(11) NOT NULL AUTO_INCREMENT,
`idcat_1` int(11) NOT NULL,
`desc` varchar(100) NOT NULL,
PRIMARY KEY (`idcat_2`)

t3
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(40) NOT NULL,
PRIMARY KEY (`id_user`)

有可能吗?

谢谢

4

1 回答 1

4

像这样:

UPDATE test AS t
INNER JOIN t1 ON -- join conditon
INNER JOIN t2 ON ...
INNER JOIN t3 ON ... 
SET t.catid_1 = '$_POST[cat_1]',
    t.descat_1 = t1.desc,
    ....
 WHERE t1.idcat_1='$_POST[cat_1]' 
   and t2.idcat_2='$_POST[cat_2]' 
   and t3.id_user='$_POST[id_user]'

不清楚这四个表是如何连接的,您需要为每个表提供连接条件JOIN


更新 1

从您刚刚在更新问题中发布的表格结构来看,这三个表格似乎都不是testt1也不是通过任何键t2与表格相关。t3在此键中,您不需要加入此表,t3只需加入表和。假如说:testt1t2

  • testt1相关test.catid_1 = t1.idcat_1
  • t1t2相关t1.idcat_1 = t2.idcat_1

像这样:

UPDATE test AS t
INNER JOIN t1 ON t.catid_1 = t1.idcat_1
INNER JOIN t2 ON t1.idcat_1 = t2.idcat_1
SET t.catid_1 = '$_POST[cat_1]',
    t.descat_1 = t1.desc,
    ....
 WHERE t1.idcat_1='$_POST[cat_1]' 
   and t2.idcat_2='$_POST[cat_2]' 
于 2013-02-19T10:55:02.477 回答