我想從一個表中添加count,sum和average值到另一個表,但我最終爲每個值查詢相同的數據。我正在使用PostgreSQL。我將這轉交給專家學習如何使此更新說明更有效。這是它:如何使此SQL更新語句更高效?
update "table1" set
"col1" = (SELECT COUNT(*) FROM "table2" WHERE "table2Id" = "table1"."table1Id"),
"col2" = (SELECT AVG("someCol") FROM "table2" WHERE "table2Id" = "table1"."table1Id"),
"col3" = (SELECT SUM("someCol") FROM "table2" WHERE "table2Id" = "table1"."table1Id");
我應該能夠像這樣運行一個子查詢一次,並訪問返回值的更新,正確嗎?
SELECT COUNT(*), AVG("someCol"), SUM("someCol") FROM "table2" WHERE "table2Id" = "table1"."table1Id";
任何幫助,非常感謝。
您使用的是哪種DBMS產品?更高性能的查詢高度依賴於這些知識。 – avgvstvs 2012-07-17 16:13:09
PostgreSQL。感謝您指出這一點,我更新了這個問題。 – Gady 2012-07-17 16:14:22
如果執行效果不佳,請嘗試在table2.table2id上添加索引。 – 2012-07-17 17:40:57