mysql - 如果数据库更新中存在记录,则在 sql 数据库中创建新记录

标签 mysql sql-server database oracle

我有 4 个数据库:sql server、MySql、DB2 和 Oracle。
我想用一些新记录写一个脚本, 但对于某些记录可能已经存在。
因此,如果 yjr 数据库更新中存在记录,则需要执行 else 在 sql 数据库中创建新记录。

是否可以用脚本而不是过程来编写?

就像如果记录不退出(创建数据)否则(更新数据)

我看到了多个链接,但大多数都只与程序相关

sql - query to insert a column value if it does not exist in that column

http://www.codeproject.com/Questions/162627/how-to-insert-new-record-in-my-table-if-not-exists

谢谢

最佳答案

要拥有统一的跨 RDBMS SQL,您可能需要在 SQL Server、MySQL 和 DB2 中创建 DUAL 表:

CREATE TABLE DUAL (DUMMY VARCHAR(1));
INSERT INTO DUAL (DUMMY) VALUES ('X');

然后对于每条记录,您将能够:

UPDATE Table SET Column = 'Value' WHERE PK = 'ID';
INSERT INTO Table (Column, PK)
SELECT 'Value', 'ID' FROM DUAL
WHERE NOT EXISTS(SELECT '*' FROM Table WHERE PK = 'ID');

如果创建 DUAL 不是一个选项,同样可以通过以下方式实现:

UPDATE Table SET Column = 'Value' WHERE PK = 'ID';
INSERT INTO Table (Column, PK)
SELECT 'Value', 'ID' FROM (SELECT Count(*) As DUMMY FROM Table) DUAL
WHERE NOT EXISTS(SELECT '*' FROM Table WHERE PK = 'ID');

关于mysql - 如果数据库更新中存在记录,则在 sql 数据库中创建新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38054503/

相关文章:

php - 使用 php 将数据库转换为 CSV

mysql - 选择一列具有不同值但可重复的列

sql-server - SSRS 并忽略 "having"子句

sql - SQL Server的varbinary数据类型可以存储哪些数据?

mysql - 使用内部子查询优化此 MySQL 查询

php - 使用 for 循环将数组插入表中

html - 使用flask从html输入到mysql;只接受单字符输入

mysql - 使用 mysql 连接 3 个表

SQL:仅检索值已更改的记录

php - 寻找一个干净地执行 PHP 数据库 session 的好例子