sql - 当它们没有共同点时,如何从多个其他表中更新表 1?
问题描述
我有一个主表和 3 个其他表。这些表中的每一个都只有一行。我想用其他表中的相应列更新 TableMain 的列。而且这些表没有我可以加入的任何列。
create table TableMain(a1 int, a2 int, b1 int, b2 int, c1 int, c2 int)
create table TableA(a1 int, a2 int)
create table TableB(b1 int, b2 int)
create table TableC(c1 int, c2 int)
我有以下内容,它有效,但看起来很糟糕:
update TableMain
set a1 = (select a1 from TableA),
a2 = (select a2 from TableA),
b1 = (select b1 from TableB),
b2 = (select b2 from TableB),
c1 = (select c1 from TableC),
c2 = (select c2 from TableC)
我已经尝试了下面的代码,但我得到了 NULL,所以这种方法不起作用:
update TableMain
set a1 = ta.a1, a2 = ta.a2,
b1 = tb.b1, b2 = tb.b2,
c1 = tc.c1, c2 = tc.c2,
from TableA ta, TableB tb, TableC tc
有没有更优雅的方式来更新这些列?
PS 我问了一个类似的问题,但它解决了从单个表进行更新的问题。
解决方案
考虑:
UPDATE tm
SET tm.a1 = ta.a1,
tm.a2 = ta.a2,
tm.b1 = tb.b1,
tm.b2 = tb.b2,
tm.c1 = tc.c1,
tm.c2 = tc.c2
FROM TableMain tm
CROSS JOIN TableA ta
CROSS JOIN TableB tb
CROSS JOIN TableC tc
推荐阅读
- c++ - 使用类从双向链表中删除节点
- php - 如何更改列以支持 unicode
- angular - npm 错误!无法读取未定义的属性“解决”
- reactjs - 获取`存储错误:应用程序试图写入一个没有提供类型名的对象,但存储已经包含一个具有类型名的对象`
- android - 使用 Activity ImageView 居中 Android WindowBackground
- python - 如何在 python 中中断 socket.recv()?
- java - 如何在春季从此查询中从表中获取值
- laravel-5 - 如何划分发送信息不同的刀片模板
- firebase - 如何根据后端定义的推荐版本检查用户当前安装的移动应用程序版本
- python - 如何使用 altair 突出显示散点图中的标记?