mysql資料庫的簡單增刪改查,合併欄位,拼接字元操作,用java完成將一張表中的查詢結果合併存入另一張表的指定欄位
阿新 • • 發佈:2018-11-05
首先問題描述:我現在有兩個表,一個表是關鍵詞,一個表是含有關鍵詞的標籤,需要做的就是在關鍵詞表中新建一個標籤欄位,把包含該關鍵詞的全部標籤存入其中。比如關鍵詞是Java,標籤可能有Java開發,Java後臺等。我這裡關鍵詞有4000個,標籤有40000個,我用了小段java程式碼+sql的函式就完成了。
基本思想:對於給定的關鍵詞,把包含關鍵詞的標籤篩選出來,然後存到一張表裡,再把該表的結果一條條讀出,存放到關鍵詞表的欄位裡去。想法比較簡單,涉及到一些sql操作可以瞭解一下。
步驟1:讀取關鍵詞和對應ID,(ID是更新時需要,也可以根據關鍵詞更新):
String sql = "select keyword,id from 表名"; ResultSet queryResult = DBUtil.queryRDBdata(sql); while (queryResult.next()) { String word = queryResult.getString("keyword"); int id=queryResult.getInt("id"); }
步驟2:篩選出包含關鍵詞(word變數)的標籤存入表b,這是一個臨時的表
String sql0 = "CREATE table b SELECT concat_ws(':',label,count) from 表名 where label like \"%" + word + "%\"";
步驟3:將表b中的資料一條條讀出,存放到變數label中
String sql1 = " select label from b "; ResultSet queryResult = DBUtil.queryRDBdata(sql1); while (queryResult.next()) { String a = queryResult.getString("label"); label=label+a+","; }
本來在sql中有可以拼接字串的函式,就是可以用sql函式把多條標籤拼到一起,存入一個欄位值中,就是使用concat函式,用法是concat(欄位名,字串),還可以按指定格式拼接concat_ws(“拼接符”,欄位名,字串),但是這個函式有長度限制,所以這裡我是直接用的java的字串拼接。
步驟4:將變數label存入到對應word的標籤欄位,我是根據ID來對應更新的
" UPDATE 表名 set label ='" + label + "'WHERE id ='" + id + "'";
完美over