程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql聯合查詢union的用法示例

mysql聯合查詢union的用法示例

編輯:MySQL綜合教程

web項目中經常會碰到整站搜索的問題,即客戶希望在網站的搜索框中輸入一個詞語,然後在整個網站中只要包含這個詞的頁面都要出現在搜索結果中。由於一個web項目不可能用一張表就全部搞定的,所以這裡一般都是要用union聯合搜索來解決整個問題的。

下面列舉一下本次使用的union聯合搜索的sql語句,方便下次備忘。

select * from 

(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND `subject` LIKE '%調整圖片%' ORDER BY `add_time` DESC) 

as t1

union all

select * from 

(SELECT `id`,`class_name` AS `subject` FROM `web_class` WHERE `active`='1' AND `class_name` LIKE '%調整圖片%' ORDER BY `class_id` DESC) 

as t2

union

select * from 

(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND (`subject` LIKE '%調整%' OR `subject` LIKE '%圖片%') ORDER BY `add_time` DESC) 

as t3;

以上SQL語句的聯合查詢主要用到了union all和union,至於這兩者的區別就是union all會列舉所有符合條件的查詢結果,而union會將所有符合條件的查詢結果做一下去除重復結果的篩選。

對於以上SQL語句的解釋就是由於article表和web_class表分屬兩個不同的表,所以這裡不用去除重復結果。然而以上聯合查詢的第三個分支的sql查詢語句是由分詞然後組合出來的查詢語句,這條sql語句查詢的結果是肯定包含第一個分支sql語句的查詢結果的,這裡就顯得沒必要了,所以沒有使用all而去掉重復的查詢結果。

您可能感興趣的文章

  • mysql將unix時間戳轉為日期格式,MySQL查詢當前時間
  • MySQL使用limit 1提高查詢效率
  • MySQL索引操作命令(創建索引、重建索引、查詢索引、刪除索引)總結
  • mysql中優化sql語句查詢的30種方法
  • 總結mysql服務器查詢慢原因與解決方法
  • 針對MySQL提高百萬條數據的查詢速度優化
  • MySQL的limit查詢優化
  • mysql查詢今天,昨天,近7天,近30天,本月,上一月數據的方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved