【问题标题】:Write a SQL Query for Multiple Database systems为多个数据库系统编写 SQL 查询
【发布时间】:2018-07-03 18:02:15
【问题描述】:

我想编写一个可以在多个数据库系统(Mysql、Sql Server、SQLLite)上运行的单个 Sql 查询。

Sql 查询:

UPDATE table2 set table2.Name = table1.Name" join table1 on table2.Id = table1.Id 

【问题讨论】:

  • 任何数据库系统都很宽泛,你可能要限制范围
  • NoSQL 是一个数据库系统。我们是否应该编写一个同样适用的查询?
  • MySQL 不遵循 ANSI 标准,祝你好运。
  • @RickS 公平地说,每个 DBMS 都会追随他们,但在某些情况下,他们都会偏离自己的方言。这就是为什么创建真正与数据库无关的代码几乎是不可能的原因。
  • @SeanLange 还算公平,但至少对于上面的SQL语句,它并没有遵循SQL标准。

标签: mysql sql sql-server oracle11g


【解决方案1】:
update table2 
set table2.name = (select min(table1.name) 
                   from table1 
                   where table1.id = table2.id);

如果id 在table1 中是唯一的,那么min(name) 可以只替换为name

【讨论】:

  • 不要以为可以在Update with SQL Server中使用表+别名
  • 甚至不需要别名 t2(我看到 JamieD77 现在编辑了我的更新)
  • 如果表 2 中存在表 1 中不存在的 id,则不完全相同。原始 SQL Server 版本只更新带有连接的行(如果我正确理解语法的话),而这里的版本更新表​​中的所有行。
  • 确实如此。根据您的需要,您可以在最后添加:where table2.id in (select id from table1)
猜你喜欢
  • 2011-12-24
  • 2011-03-17
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多