Sql 如何在交叉引用其他表时更新记录?
如果标题没有准确描述问题(可能没有),则表示歉意。我有以下两个表格:- tLiveTable:Sql 如何在交叉引用其他表时更新记录?,sql,sql-server,join,Sql,Sql Server,Join,如果标题没有准确描述问题(可能没有),则表示歉意。我有以下两个表格:- tLiveTable: PieceID LocationRef ------------------------ 100 5 TPiectable: ID BatchNo PieceNumber ------------------------------ 50 ABC X1 100 ABC X1 仅给定BatchNo和Pi
PieceID LocationRef
------------------------
100 5
TPiectable:
ID BatchNo PieceNumber
------------------------------
50 ABC X1
100 ABC X1
仅给定BatchNo和PieceNo,如何更新tLiveTable中该工件的LocationRef
我尝试了以下方法:
UPDATE tLiveTable
SET LocationRef = 'blabla unimportant'
WHERE
PieceID = (SELECT ID FROM tPieceTable WHERE (BatchNo = 'ABC') AND (PieceNo = 'X1'))
但tPieceTable中可能有多个条目具有相同的BatchNo和PieceNo。我只想从tPieceTable中检索ID,其ID当前为tLiveTable中的ID
我真的应该为此使用内部联接吗?您的查询将无法运行,因为从tpiectable中选择ID,其中(BatchNo='ABC')和(PieceNo='X1')
返回多个ID
试试这个
UPDATE L SET LocationRef = 'blabla unimportant'
FROM tLiveTable L JOIN tPieceTable P
ON L.PieceID = P.ID
WHERE (P.BatchNo = 'ABC') AND (P.PieceNo = 'X1')
或在中为=
UPDATE tLiveTable
SET LocationRef = 'blabla unimportant'
WHERE
PieceID IN (SELECT ID FROM tPieceTable WHERE (BatchNo = 'ABC') AND (PieceNo = 'X1'))