46 lines
1.1 KiB
SQL
46 lines
1.1 KiB
SQL
# name: test/sql/merge/merge_into_subquery.test
|
|
# description: Test MERGE INTO with subqueries
|
|
# group: [merge]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
CREATE TABLE Totals(item_id int, balance int);
|
|
|
|
statement ok
|
|
CREATE TABLE Buy(item_id int, volume int);
|
|
|
|
statement ok
|
|
INSERT INTO Buy values(10, 1000), (30, 300), (20, 2000);
|
|
|
|
query I
|
|
MERGE INTO Totals USING (VALUES (10), (30)) Updates(item_id) ON Totals.item_id = Updates.item_id
|
|
WHEN MATCHED THEN UPDATE SET balance = (SELECT SUM(volume) FROM Buy WHERE item_id=Totals.item_id)
|
|
WHEN NOT MATCHED THEN INSERT VALUES (Updates.item_id, (SELECT SUM(volume) FROM Buy WHERE item_id=Updates.item_id));
|
|
----
|
|
2
|
|
|
|
query II
|
|
FROM Totals ORDER BY ALL
|
|
----
|
|
10 1000
|
|
30 300
|
|
|
|
statement ok
|
|
INSERT INTO Buy values(10, 2000)
|
|
|
|
query I
|
|
MERGE INTO Totals USING (VALUES (10), (20)) Updates(item_id) ON Totals.item_id = Updates.item_id
|
|
WHEN MATCHED THEN UPDATE SET balance = (SELECT SUM(volume) FROM Buy WHERE item_id=Totals.item_id)
|
|
WHEN NOT MATCHED THEN INSERT VALUES (Updates.item_id, (SELECT SUM(volume) FROM Buy WHERE item_id=Updates.item_id));
|
|
----
|
|
2
|
|
|
|
query II
|
|
FROM Totals ORDER BY ALL
|
|
----
|
|
10 3000
|
|
20 2000
|
|
30 300
|