mysql数据库查询 查询一张表某列中是都包含另一张表某列的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库查询 查询一张表某列中是都包含另一张表某列的数据相关的知识,希望对你有一定的参考价值。

微博信息表的 数据结构,

负面词汇表的表结构 。
要求是 查询出 微博信息表中 content列中包含 负面词汇表中 sentence 负面词汇列的所有数据
也就是说在页面的下拉框 选择 对应的信息 或者是显示负面信息或者是 全部信息 如果sql 无法实现 有没有别的思路可以实现 ,我试过用程序来做比较 速度有点慢

这个操作SQL实现不了,因为其中涉及了全文检索的功能。
要实现此类功能,建议从业务 逻辑入手,就是在content存入数据库时,检查气宗是否包含负面词,并进行标记,之后存入另外一张表中记录这些包含负面词的记录

所以,建议你在保存微博数据的内容时进行检查,然后在微博信息表中增加一个字段,标识是否包含负面信息,这样你在查询的时候就是对标记位的判断了。
相当与把你处理的时间分散到保存记录中,然后通过标记位做索引。追问

哎木有办法啊 不能实现也得想办法啊 ,功能就这样的

追答

所以,建议你在保存微博数据的内容时进行检查,然后在微博信息表中增加一个字段,标识是否包含负面信息,这样你在查询的时候就是对标记位的判断了。
相当与把你处理的时间分散到保存记录中,然后通过标记位做索引。

就是扩展一个字段,加个业务逻辑处理应该没有问题吧,负面词可以考虑缓存在服务器的内存中,用个高效的内存检索结构。

追问

及时是这样也需要对现在库中的信息 进行查询做标识 不能叫我 挨个信息 和词汇表中的所有负面词汇进行比较吧 这个有点费劲了所有还的找个能查询的方法出来的

参考技术A select t1.id,t1.content,t2.sentence
from 微博信息表 t1 join 负面词汇表 on instr(t1.content,t2.sentence)>0

不知道这2个表的具体关系,如微博信息表中的id与负面词汇表中的id是都是微博信息的id?

追问

没有关联关系~~ 这是最大的问题 id是用 uuid做的标识 这让人蛋疼的数据

追答

那上面的sql应该能用,只不过效率可能比较差,如果微博数据量比较大的话,可能比较难以忍受,建议建1个微博与负面词汇关系表,实时更新这个表,化整为0,这样可能取得更新时间与查询时间的平衡

本回答被提问者采纳
参考技术B select * from A , B where A.id = B.id and B.sentence = A.content(+)
哦...不知道是不是这意思
参考技术C 试试locate函数

mysql把查询到不一样的记录插入到另一张表中

我们将一个表中的数据插入到另一个表中的时候可以这么写:
 
INSERT INTO 目标表  
 (字段1, 字段2, ...)  
 SELECT 字段1, 字段2, ...  
 FROM 来源表  
 WHERE not exists (select * from 目标表  
 where 目标表.比较字段 = 来源表.比较字段);

以上是关于mysql数据库查询 查询一张表某列中是都包含另一张表某列的数据的主要内容,如果未能解决你的问题,请参考以下文章

把一张表中某列数据更新到另一张表的某列

oracle中怎么如何把两张表中查询到的数据求和,

sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据

sql 语句 获取某张表某列字段最短的某几行数据

用excel中用sql语言查询工作表某列数据,出现查询无法运行或数据库表无法打开是怎么回事

Sql语句查询某列A相同值的另一列B最大值的数据