2017-07-31 68 views
0

的MySQL版本14.14 DISTRIB 16年7月5日,爲Win64平臺下(x86_64)如何使用僅使用SQL從另一個表中更新表的信息?

我有兩個表:

content_table: content_id, content(String), tag_id(int) 

tag_table: tag_id(int), tag(String) 

現在content_table.tag_id都是空的。

我想要做這樣的事情:

對於content_table每條記錄,我想找到合適的TAG_ID(只有一個),並更新了record.tag_id。標籤應該是內容的子字符串。

有沒有辦法只用SQL來做到這一點? 或者我必須使用JDBC或其他語言的東西?

謝謝。

數據例如:

在content_table,我有這些記錄: content_id, content, tag_id 1, "This is a great movie", 0 2, "I bought the car last week", 0 3, "His iPad is a gift from his brother", 0 在tag_table,我有這些記錄: tag_id, tag 1, "movie" 2, "iPad" 3, "car" 4, "phone" ... 手術後,我想更新content_table到: content_id, content, tag_id 1, "This is a great movie", 1 2, "I bought the car last week", 3 3, "His iPad is a gift from his brother", 2 這些記錄是例子實際上,content_table中有10K +條記錄,tag_table中有3k條記錄。

+2

您可以分享一些示例數據和/或解釋如何將標籤與內容匹配? – Mureinik

+0

無法理解你想實現什麼 –

+0

查看mysql [全文搜索功能](https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html)。 –

回答

1

填充一個二維數組說,tagArray,與TAG_ID,從標籤表標籤,然後遍歷數組substiture ID和像數組變量分爲以下更新的SQL語句並執行該語句:

字符串sqlUpdate =「UPDATE content_table SET tag_id =」+ tagArray [i] [0] + 「WHERE content LIKE CONCAT('%',」+ tagArray [i] [1] +「,'%')」;

+0

這對一個或兩個記錄有好處,但如果每個表中有10k +記錄,我該怎麼辦? – dif

+0

同意,我會結合Java和這個sql命令遍歷記錄並動態填充更新命令。所以從標籤表填充一個數組,然後遍歷數組到代數id和類似數組中的變量。 – BusinessPlanQuickBuilder

+0

我已經調整了我的答案以顯示我的意思。 – BusinessPlanQuickBuilder

相關問題