+-

我在这里问了类似的问题……
three tables with Inner Join
但我无法得到足够的答案来解决我的问题,所以我不得不再次提问……
我有下表……
**
anyone who want to play on the data please test it here 07001
**
Table1
IDA colB colC
111 a w
222 b w
333 c s
444 b g
Table2
IDB colB colC
11 w f
12 w r
13 s g
Table3
IDA IDB
111 11
222 12
333 13
444 14
下面的代码将从table1复制或插入到表中没有问题,但是有错误的table2 IDB(因为table2 IDB值应该从内部连接到table3)
INSERT INTO table2 SELECT * FROM table1 WHERE IDA = 111
但是将所有从table1复制到table2,这是错误的……
所以,我所做的是……以下的内部联系……但是没有工作……
INSERT INTO table2
(SELECT * FROM table1 b
LEFT JOIN table3 c ON c.IDA = b.IDA
LEFT JOIN table2 a ON a.IDB = c.IDB)
WHERE IDB = 111
这也不起作用….
但是,我需要的是……我想从table1复制到table连接到table3,如果行可用则更新,如果不插入….
对不起要问两次,但我是亲戚从你们那里得到一些想法……
请帮忙……先谢谢…
可能正在使用php,如果可能的话……
最佳答案
尝试使用ON DUPLICATE KEY
$sql = "INSERT INTO `table2` (Col2, Col3)
VALUES ('val1', 'val2')
ON DUPLICATE KEY UPDATE
Col2='val1', Col3='val2'";
编辑:
INSERT INTO table2 (ColB , ColC)
(SELECT ColB.b,ColC.b FROM table1 b
LEFT JOIN table3 c ON c.IDA = b.IDA
LEFT JOIN table2 a ON a.IDB = c.IDB
WHERE IDB = 111
)
ON DUPLICATE KEY UPDATE
ColB = ColB.b
ColC = ColC.b
并尝试避免mysql_ *语句由于整个ext / mysql PHP扩展,它提供了所有以前缀mysql_ *命名的函数,从PHP v5.5.0开始正式弃用,将来会被删除.
还有另外两个MySQL扩展你可以更好地使用:MySQLi和PDO_MySQL,其中任何一个都可以用来代替ext / mysql.
点击查看更多相关文章
转载注明原文:php – 如果存在则更新,如果MySQL中不存在则插入行 - 乐贴网