亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用相同的用戶名更新另一個表中的表值

使用相同的用戶名更新另一個表中的表值

阿晨1998 2019-07-30 16:18:40
使用相同的用戶名更新另一個表中的表值我有兩個表,名稱相同的列user_name,說table_a,table_b。我想,從復制table_b,column_b_1,column_b2,以table_b1,column_a_1,column_a_2,分別,這里的user_name是一樣的,如何做到這一點的SQL語句?
查看完整描述

3 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

只要你有適當的索引,這應該是正常的:

UPDATE table_aSET
      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中的UPDATE 不支持FROM子句,這使得它比其他RDBMS更多的工作。

如果性能不令人滿意,另一個選項可能是使用select和table_a連接到table_a為臨時表建立新行。然后從table_a中刪除數據并從臨時值中重新填充。


查看完整回答
反對 回復 2019-07-30
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

從sqlite 3.15版開始,UPDATE的語法在SET部分中允許列名列表,因此查詢可以寫為

UPDATE table_aSET
    (column_a_1, column_a_2) = (SELECT table_b.column_b_1, 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   )

這不僅更短,而且更快


查看完整回答
反對 回復 2019-07-30
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

從另一個表更新一個表有一個更好的解決方案:

;WITH a AS(
    SELECT
        song_id,
        artist_id    FROM
        online_performance)UPDATE record_performanceSET
    op_song_id=(SELECT song_id FROM a),
    op_artist_id=(SELECT artist_id FROM a);


查看完整回答
反對 回復 2019-07-30
  • 3 回答
  • 0 關注
  • 667 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號