I have plenty of beef with SQL, but your insert versus update example doesn't make sense to me. That's a perfectly reasonable difference; insert is always a dense operation while update is usually a sparse operation.
INSERT INTO table1 (col_1, col_2, col3)
SELECT COUNT(col_6), col_4, col_5 FROM table2 INNER JOIN... INSERT INTO table1
col_1 = COUNT(table2.col_6),
col_2 = table2.col_4,
col3 = table2.col_5
FROM table2 INNER JOIN ...