php - MySQL存在则更新,不存在则插入

标签 php mysql sql

我在这里问过类似的问题......

three tables with Inner Join

但是我没有得到足够的答案来解决我的问题,所以我不得不重新提问...

我有下表...

**

anyone who want to play on the data please test it here http://sqlfiddle.com/#!9/a0807

**

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 复制或插入到 table to 没有问题,但是 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

并且由于整个 ext/mysql PHP 扩展,尽量避免 mysql_* 语句,它提供了所有以前缀 mysql_* 命名的函数>,自 PHP v5.5.0 起正式弃用,并将在未来删除

还有另外两个 MySQL 扩展可以更好地使用:MySQLiPDO_MySQL,其中任何一个都可以代替 ext/mysql.

关于php - MySQL存在则更新,不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18399544/

相关文章:

php - 过滤特定列,如果匹配则获取记录

mysql - 获取连接表中存在和不存在的所有数据

php - 在 mysql 中更新或删除

php - 配置更改后,MySQL 数据库中的 UTF-8 字符串变得困惑

php - 如果表 2 中存在 Id,则获取表 1 数据

mysql - 这个查询可以写在 MS SQL 服务器上吗?该查询适用于 MySQL,但在 MS SQL Server 上未提供所需的输出

php - "submitting"用户名和聊天框文本的表单似乎没有实际提交任何内容

sql - PostgreSQL 可以对 tsvector 执行语音搜索吗?

SQL Server 2008 - 缩小事务日志 - 有什么自动化方法吗?

php - HTTP header 阻止浏览器加载页面?