2017-07-31 75 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

相关问题