2015-12-13 24 views
1

源表中有378列,目標表中有38列都存儲用戶數據。可以說我的User_ID = 10 在源表中有超過50列,我的用戶ID可以出現。將源表中的數據插入到目標表中的SQL語句

因此,我需要一個腳本來搜索這66列,並將源表中出現用戶ID的次數插入到目標表中,同時記住1行將被計爲1,而不考慮多少次我的用戶ID出現在該行。

目前,我有以下腳本:

INSERT INTO target_table (matches) 
    SELECT * 
    FROM match_details 
    WHERE player_stats.player_id IN (col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11) 
+0

這句話似乎有矛盾的我「,將搜索到這些66列和插入的次數我的用戶ID出現在源表入腦海目標表中保存的是1排將被計爲1,而不管我的用戶ID在該行中出現了多少次「,您能否更好地解釋?並且輸出期望的結果。 –

+1

你的問題始於'Source table has 378 columns',我就像o.O? – KarelG

+1

@JuanRuizdeCastilla假設從ColA到ColJ的表格中有10列。用戶ID「10」出現在第一行的A,B,D,G,I和J列中。在第二行用戶ID'10'只出現在A列中。第三行用戶ID'10'不出現在任何列中。在第四行用戶ID'10'出現在列H&J中。用戶ID的計數應該等於3,因爲它出現在第1,2和4行中,而不管它在一行中出現在不同列中的次數。 – Sapphire

回答

1
  1. 你的架構需要一些工作。你的專欄不應該是專欄,他們應該在另一張專欄中。

  2. 儘管如此,如果您有一個包含用戶ID的表。

SQL:

INSERT INTO target_table (user_id, matches) 
    SELECT u.id AS user_id, count(*) 
    FROM users u 
     JOIN match_details m 
      ON u.id IN (d.col1, d.col2, d.col3, d.col4, d.col5...) 
    GROUP BY user_id 
相關問題