使用相同的用户名从另一个表中更新表值
我有两个表,名为user_name的同一列,说table_a,table_b。
我想从table_b,column_b_1,column_b2分别复制到table_b1,column_a_1,column_a_2,分别在user_name是相同的,如何在sql语句中做到这一点?
只要你有合适的索引,这应该工作正常:
UPDATE table_a SET column_a_1 = (SELECT table_b.column_b_1 FROM table_b WHERE table_b.user_name = table_a.user_name ) , column_a_2 = (SELECT table_b.column_b_2 FROM table_b WHERE table_b.user_name = table_a.user_name ) WHERE EXISTS ( SELECT * FROM table_b WHERE table_b.user_name = table_a.user_name )
sqlite3中的更新不支持FROM子句,这使得它比其他RDBMS更有效。
如果性能不理想,另一个select可能是使用select为table_a构build新行,并将其与table_a结合到一个临时表中。 然后删除table_a中的数据并从临时重新填充。
从另一个表更新一个表格还有更好的解决scheme:
;WITH a AS ( SELECT song_id, artist_id FROM online_performance ) UPDATE record_performance SET op_song_id=(SELECT song_id FROM a), op_artist_id=(SELECT artist_id FROM a) ;