MySQL多項模糊查詢
最近有個需求,就是要根據搜索框裏面的關鍵字,找到符合條件的數據。
如果是單個條件的話,其實就是一個普通的select語句。
但是需求是這個關鍵字,要在id,desc,step等多個字段模糊查找。
然後最直觀的一個思路肯定就是:
select * from t_bug where `id` like %key% or `desc` like %key% or `step` like %key%
對一條記錄,要對id、desc、step三項都判斷一下符不符合key。
缺點:需求只有三個記錄,如果是多個記錄的話,那就效率會很慢,而且修改這個語句也很復雜。
一個更好的方法是,把需要模糊查詢的各個字段,用concat拼接起來,成為一整個字符串,再用like來匹配。
SELECT * FROM t_bug WHERE CONCAT(`desc`,`step_to_string`,`bug_id`) LIKE %key%
我在項目中就是這麽做的,導師也認為沒什麽大問題:
各位有什麽更好的方法,也可以交流一下哈。
MySQL多項模糊查詢
相關推薦
MySQL多項模糊查詢
logs alt 查找 cat com 關鍵字 導師 concat 復雜 最近有個需求,就是要根據搜索框裏面的關鍵字,找到符合條件的數據。 如果是單個條件的話,其實就是一個普通的select語句。 但是需求是這個關鍵字,要在id,desc,step等多個字段模糊查找。 然後
mySql多列模糊查詢
一般資料庫進行多欄位模糊查詢的時候是這樣的:select * from table where name like '%xxx%' or sex like '%xxx%' or phone like '%xxx%'這樣資料庫執行起來效率十分低下,一個兩個欄位還好,一旦需要模糊
MySQL中根據if標籤實現多條件模糊查詢(動態SQL語句)
if標籤 if標籤可用在許多型別的sql語句中,我們以查詢為例。首先看一個很普通的查詢: Xml程式碼 <!-- 查詢學生list,like姓名 --> <select id="getStudentListLikeName" pa
多值模糊查詢報表的制作
程序 字段名 text 遇到 ODB 模板 區域 one ima 在數據查詢系統中,經常會涉及到模糊查詢和多值查詢。對於模糊查詢,我們可能都有所了解。就是根據用戶在參數框中輸入的關鍵字進行模糊匹配,這在SQL中是通過like條件實現的。而多值查詢則大多是一次在參數框中輸入2
php mysql 分詞 模糊查詢 並根據分詞匹配度排序
close desc highlight this then 中文 sql 一個數 exec 中文分詞用 SCWS 的api http://www.xunsearch.com/scws/api.php 1.php中用 curl獲取分詞結果 protected functi
Mysql 多表聯合查詢效率分析及優化
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
mysql中like模糊查詢的優化
這是我在一個百萬級資料庫資料匯出遇到的問題 比如這個語句在這個資料庫查詢很慢: select a from tms where b like ‘%haha%’ order by time limit 100; 第一種優化方法(注意:這種方法只適用於haha開頭的): //將haha欄位和
mysql多欄位查詢去重
當資料表有主鍵時,使用group by 獲取相同欄位的最大主鍵即可,code如下: SELECT rn.* FROM table_name rn WHERE rn.id IN ( SELECT MAX(r.id) from table r GROUP BY a,b,c,d )
PostgreSQL 模糊查詢最佳實踐 - (含單字、雙字、多字模糊查詢方法)
作者digoal 日期2017-04-26 標籤PostgreSQL , 模糊查詢 , 正則查詢 , pg_trgm , bytea , gin , 函式索引 背景前模糊(有字首的模糊),後模糊(有後綴的模糊),前後模糊(無前後綴的模糊),正則匹配都屬於文字搜尋領域常見的需求。 PostgreSQL擁
MySQL多表連線查詢
多表查詢:當查詢結果來自多張資料表的時,就需要用到連線查詢。 多表連線查詢:會出現笛卡爾積的現象:a表有m行,b表有n行,查詢結果=m*n行,消除笛卡爾積現象就必須加上關聯條件,關聯條件的個數=n個表-1。 多表連線查詢按照能分類為: 1、內連線:  
thinkphp5 一個欄位對應多個模糊查詢
$condition['kname'] = array(array('like','%保健%'), array('like','%護膝%'), array('like','%保健護膝護腰護頸%'), 'or'); 如果是動態的多個條件可以如下: $con
MYSQL多表子查詢練習
CREATE TABLE emp( empno INT, ename VARCHAR(50), job VARCHAR(50), mgr INT, hiredate DATE, sal DECIMAL(7,2), comm DECIM
mysql 優化 - like模糊查詢優化
在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在資料量小的時候,不容易看出查詢的效率,但在資料量達到百萬級,千萬級的時候,查詢的效率就很容易顯現出來。這個時候查詢的效率就顯得很重要! 一般情況下like模糊查詢的寫法為(field已建立索引): SE
mysql 多表管理 查詢的時候資料為null
1.1原sql查詢的時候left join的 某張表的資料為null SELECT t.bill_no billNo, t.item_code itemCode, t.status pickTicketStatus, a.status pickTick
MySQL 多表連線查詢練習 (四)
測試用資料來源於Oracle資料庫中的測試資料MySQL資料庫表: employees員工表,departments部門表, locations地址表#----表連線查詢練習 SELECT * FROM departments; select * from departme
分析為什麼mysql中like模糊查詢效率低
相比update和insert,一般查詢應該是資料庫中操作最頻繁的。而在有些應用場景需要用到like模糊查詢,那麼對於大資料,查詢的時候就要注意了。現在來分析一下為什麼like語句查詢的效率會很低,測試資料共4000000條,如下圖:第一步:不使用索引下圖可以看出,不使用索引的時候普通查詢與like查詢的耗時
mysql 多表連結查詢
我要做一個按銷售數量排序的查詢sql操作,現在有如下3個表,要求獲取d_product表中的所有資料(包括沒有銷售記錄的資料)以及d_item表中的銷售數量(product_num欄位的值),查詢條件是d_catego
Mysql多表聯合查詢效率分析優化
1. 多表連線型別 1. 笛卡爾積(交叉連線) 在MySQL中可以為CROSS JOIN或者省略CROSS即JOIN,或者使用’,’ 如: SELECT * FROM table1 CROSS JOIN table2SELECT * FROM table1 JOIN
mysql多表關聯查詢進行資料修改
問題描述:進行update某個表資料的時候,需要關聯查詢若干表進行篩選過濾. 問題解決: UPDATE t_order_third AS t INNER JOIN t_order_attach
實現多條件模糊查詢SQL語句
很多網友問到如何寫模糊查詢語句和多條件查詢,這裡我整理了一下,假設以姓名、性別、電話號...作為資料庫中的欄位名。 通常寫一個簡單的模糊查詢的SQL語句格式可以如下例: sql="select * from 表名 where 欄位名 like ’%" & reques