concat聚合函数查询
select * from node where tenant_id=1166220750772899840 and tree_id=1166221500655734785 and CONCAT(name,fields) like '%水果%';
普遍or查询
select * from node where tenant_id=1166220750772899840 and tree_id=1166221500655734785 and name like '%水果%' or `fields` like '%水果%';
比较
#.1 查询条件一样,查询方式不同,导致数据结果不同,显然通过concat方式查询的数据只有17条,丢失了四条,我们找到了这四条数据
通过水果过滤数据,发现concat聚合函数会过滤掉这四条属于fields字段的数据,而这四条数据是符合我们查询需求的,通过比较发现,concat聚合函数就是将两个字段的内容组合到一起再进行其他操作,比如模糊查询的操作.
问题
但是,问题来了,明明我把内容都组合在一起,再做模糊查询,为啥数据会丢失呢?
17条的数据
21条的数据
明明都聚合了,那么更容易查到啊,数据不会丢失啊,但是查询的结果就是这样,答案暂时还不得知.
但是
我又仔细看了一下发现了猫腻
多的四条数据,tenant_id和tree_id是不符合查询条件的
我发现
通过聚合函数确实是能够更准确的找到数据,尽管我们是模糊查询
但是,查询条件给定了tenant_id 和tree_id的时候,我们只能在符合条件的情况下选择,因此,多字段查询,选择concat函数会更好一点,数据会更准确一些.