У меня есть две таблицы - package и subpackage as:
CREATE TABLE Package (
Sequence int PRIMARY KEY,
Package int,
Mnemonic char(3),
MnemonicValue int
);
CREATE TABLE SubPackage (
Sequence int PRIMARY KEY,
SubPackage int,
Mnemonic char(3),
MnemonicValue int
);
INSERT INTO Package (Sequence, Package, Mnemonic, MnemonicValue)
VALUES (1, 111, 'XXX', 0), (2, 111, 'SUB', 153), (3, 111, 'DDD', 30), (4, 111, 'YYY', 20), (5, 111, 'ZZZ', 1000);
INSERT INTO SubPackage (Sequence, SubPackage, Mnemonic, MnemonicValue)
VALUES (1, 153, 'AAA', 20), (2, 153, 'BBB', 1000), (3, 153, 'CCC', 30);
Требуется выполнить поиск Mnemoni c 'SUB' в таблице пакетов и заменить запись SUB записями из ' Таблица «Подпакет» для сопоставленного значения Mnemoni c (153) и повторной последовательности значений последовательности, как показано в таблице [Результат] [2].
Я пытался использовать оператор обновления как:
UPDATE package
SET Mnemonic = subpackage.Mnemonic
FROM package
INNER JOIN subpackage
ON package.MnemonicValue = subpackage.SubPackage
Но при этом запись SUB из таблицы пакетов заменяется только записью AAA из таблицы подпакетов. Я хочу, чтобы SUB-запись была заменена всеми записями из таблицы подпакетов и повторно упорядочила ее в новой таблице, как показано в таблице Result.
Желаемый результат:
Sequence | Particular | Mnemonic | MnemonicValue
1 | 111| XXX| 0
2 | 111| AAA| 20
3 | 111| BBB| 1000
4 | 111| CCC| 30
5 | 111| DDD| 30
6 | 111| YYY| 20
7 | 111| ZZZ| 1000