0

タイトルが質問を正確に説明していない場合はお詫びします(おそらく説明していません)。私は次の2つのテーブルを持っています:-

tLiveTable:

PieceID      LocationRef
------------------------
100              5

tPieceTable:

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を持つ複数のエントリが存在する可能性があります。IDが現在tLiveTableにあるものであるtPieceTableからのみIDを取得したい。

これには本当にINNERJOINを使用する必要がありますか?

4

1 に答える 1

1

複数のID返すため、クエリは機能しません SELECT ID FROM tPieceTable WHERE (BatchNo = 'ABC') AND (PieceNo = 'X1')

これを試して;

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')

またはのために使用INする=

UPDATE tLiveTable
SET LocationRef = 'blabla unimportant'
WHERE
PieceID IN (SELECT ID FROM tPieceTable WHERE (BatchNo = 'ABC') AND (PieceNo = 'X1'))
于 2012-12-12T16:58:27.867 に答える