我的SQL数据库中有两个表:
表A :
------------------------------------------------------
| score1 | score2 | score3 | timestamp | identifier |
------------------------------------------------------
| NULL | NULL | NULL | 2018-01-01 | ABCDEF |
------------------------------------------------------
表B :
------------------------------------------------------
| scoreA | scoreB | scoreC | timestamp | identifier |
------------------------------------------------------
| 1234 | 5678 | 8901 | 2018-02-02 | ABCDEF |
------------------------------------------------------
我正在尝试向UPDATE
写一个SELECT
查询,并将scoreA, scoreB, scoreC
从 TableB 映射到的score1, score2, score3
列TableA 表示与identifier
值匹配的记录。
我可以想办法在代码中执行此操作,但不能在sql中执行此操作。我试图获得一张桌子(在执行UPDATE
之后),看起来像:
预期 TableA :
------------------------------------------------------
| score1 | score2 | score3 | timestamp | identifier |
------------------------------------------------------
| 1234 | 5678 | 8901 | 2018-01-01 | ABCDEF |
------------------------------------------------------
我认为我可以在我的SELECT
这样的(伪)中做简单的UPDATE
:
UPDATE TableA SET (
score1 = (SELECT scoreA FROM TableB WHERE identifier = 'ABCDEF'),
score2 = (SELECT scoreB FROM TableB WHERE identifier = 'ABCDEF'),
score3 = (SELECT scoreC FROM TableB WHERE identifier = 'ABCDEF'),
) identifier = 'ABCDEF'
但对我来说,这看起来很愚蠢,因为内部SELECTS
基本上是完全多余的。 UPDATE
一个表格是否有更有效的方式来自另一个表格的SELECT
个结果?
这可能是一个简单的问题,但此刻,它已经超出了我的想法。
如果我在代码中这样做,我正在使用C#,但是,我试图在SQL中完全这样做。 MS Azure SQL,如果重要。
答案 0 :(得分:1)
是的,您可以通过加入执行更新。注意别名A。
getResourceAsStream
答案 1 :(得分:0)
您需要使用// Require dependencies
var express = require('express');
var app = express();
// Set server port
app.set('port', (process.env.PORT || 3000));
// Set static page directory, /public
app.use(express.static(__dirname + '/public'));
app.use('/public', express.static('public'));
// Set template file directory, /views. Set view engine to EJS
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
// Route root request to pages/index
app.get('/', function(request, response) {
response.render('pages/index');
});
// Route favicon request to public/favicons
app.get('/favicon.ico', function(request, response) {
response.render('./public/favicons');
});
// Begin listening at specified port
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
table1
进行联接
table2
如果,我会按照您的方式行事,那么相关方法但不会更有效
update t1
set t1.score1 = t2.scoreA,
t1.score2 = t2.scoreB,
t1.score3 = t2.scoreC
from table1 t1
inner join table2 t2 on t2.identifier = t1.identifier