MYSQL更新到选择的3个表中

MYSQL更新到选择的3个表中,mysql,Mysql,我使用这个查询(insert into select 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

我使用这个查询(insert into select 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表中的行(更新为SELECT3表)

表结构

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`)
有可能吗

谢谢你这样说:

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]'
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]' 
不清楚这四个表是如何联接的,您需要为每个
联接提供联接条件


更新1 从您刚刚在更新的问题中发布的表结构来看,似乎三个表都不是通过任何键与表
t3
相关的
test
t1
t2
。在此键中,您不需要加入此表
t3
,只需加入表
test
t1
t2
。假设:

  • test
    t1
    相关,与
    test.catid\u 1=t1.idcat\u 1
    相关
  • t1
    t2
    相关,与
    t1.idcat_1=t2.idcat_1
    相关
像这样:

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]'
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]' 
像这样:

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]'
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]' 
不清楚这四个表是如何联接的,您需要为每个
联接提供联接条件


更新1 从您刚刚在更新的问题中发布的表结构来看,似乎三个表都不是通过任何键与表
t3
相关的
test
t1
t2
。在此键中,您不需要加入此表
t3
,只需加入表
test
t1
t2
。假设:

  • test
    t1
    相关,与
    test.catid\u 1=t1.idcat\u 1
    相关
  • t1
    t2
    相关,与
    t1.idcat_1=t2.idcat_1
    相关
像这样:

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]'
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]' 

谢谢,但我似乎无法正确填写join子句。我在t1.catid_1=t2.catid_1上设置这个内部连接t1。你能给我一些帮助吗?thanks@PaoloRossi-当然可以,你能把这三张桌子的结构张贴出来吗?这将是有帮助的。谢谢,但我似乎无法正确完成join子句。我在t1.catid_1=t2.catid_1上设置这个内部连接t1。你能给我一些帮助吗?thanks@PaoloRossi-当然可以,你能把这三张桌子的结构张贴出来吗?这会有帮助的。