Mysql中Concat聚合函數一個比較

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函數會更好一點,數據會更準確一些.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章