mysql - SQL SERVER 2012 如果存在和如果不存在

标签 mysql sql sql-server-2012

我正在尝试编写一个查询来检查仪表是否存在,然后进行更新,而不是插入到每月数据表中!问题是我对语法感到困惑,我不知道该怎么做!

这是数据库设计。假设我的电表编号为 2012345,我该怎么做?谢谢enter image description here

最佳答案

在 SQL Server 中(仅使用 name 作为演示,您当然需要更多字段)

MERGE meters AS target
USING (SELECT '2012345') AS source (meternumber)
ON (target.meternumber = source.meternumber)
WHEN MATCHED THEN 
  UPDATE SET name='MeterUpdate#1', meternumber=source.meternumber
WHEN NOT MATCHED THEN 
  INSERT (name, meternumber) VALUES ('MeterInsert#1', source.meternumber);

An SQLfiddle to test with .

在MySQL中,在meters上创建唯一索引(meternumber);

CREATE UNIQUE INDEX bop ON meters(meternumber);

然后使用插入/更新;

INSERT INTO meters (name, meternumber) VALUES ('MeterInsert#1', '2012345')
    ON DUPLICATE KEY UPDATE name='MeterUpdate#1', meternumber='2012345';

Another SQLfiddle .

关于mysql - SQL SERVER 2012 如果存在和如果不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411108/

相关文章:

mysql - 对页面进行分组并从每组中获取 x 行数

SQL批量插入-文件不存在

c# - 从 int 转换为 long 抛出异常

sql-server - 如何监控更新表统计信息的成本?

sql-server - SQL 服务器 - 估计执行时间并获取更改表命令的进度

mysql - mysql中结果集的情况

mysql - 我应该在 JSON 中编码大括号还是方括号?

sql - 帮助形成 SQL 查询

java - 当现有名称是保留字时,如何更改 HSQLDB 中的列名称?

python - 这两种实现 `on duplication increment` 的方法有什么区别?