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