mysql之多表查詢

? ? ? 今天在項目中遇到一個數據庫查詢的問題:三張表分別放置不同的東西:分享的音頻相關數據、分享的文字圖片說說、分享的主題相關數據。所有分享的東西都可看做新鮮事,現在要求從這三張表將相同的幾個字段的數據全部查找出來按照發布時間先后排序(至于為什么不把這三張表的數據整到一張表里面這是由于數據庫是這樣設計的,咱這先不討論數據庫設計的好壞,就記錄一下自己怎么使用三表聯合查詢將這三張表的數據都查找出來)。

  在網上找了些聯合查詢相關的資料:

  有幾個不錯的技術博客做了很好的介紹:

  1、http://blog.sina.com.cn/s/blog_6ad62438010168lg.html

  2、http://www.ynpxrz.com/n598810c2024.aspx

  介紹:使用union或union all都可實現合并兩個或多個select語句的結果集:其中union會將查出來的結果中相同內容的行合并,而union all不會合并相同行。

  要點:

    (1)兩次或多次查詢的列數必須一致;

    (2)以第一個子查詢語句中列的類型為標準,之后所有查詢語句中各列的類型第一個子查詢中對應類的類型一致;

    (3)多次select語句中查詢的列名可以不相同,最后查詢結果表的列名是以第一個子查詢語句中的列名來命名的;

    (4)如果子句中有order by,limit,需要用括號()包起來。如果將order by,limit放到所有子句之后,即對最終合并的結果表進行排序或篩選。

  操作:

    1、參考上面給出的兩個技術博文,我自己進行了實踐,前面幾次都出錯,我下面給出我敲出來的sql已經相應的報錯內容,并附上截圖:

     sql語句1: mysql> select * from (select alarm_publishSite,alarm_publishtime from alarm union select theme_issueLocation,theme_publishtime from theme);

     報錯:ERROR 1248 (42000): Every derived table must have its own alias

     這個錯誤是指每個派生表需要一個別名

     sql語句2mysql> select * from (select alarm_publishSite,alarm_publishtime from alarm) as?t1 union (select theme_issueLocation,theme_publishtime from theme) as t2;

     報錯:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that?corresponds to your MySQL server version for the right syntax to use near 'as t2' at line 1

     sql語句3mysql> select * from (select alarm_publishSite,alarm_publishtime from alarm) as?t1 union (select theme_issueLocation,theme_publishtime from theme);

     這次很幸運,成功將兩個表中的數據聯合查出來了,如下圖:

      

      sql2語句與sql3語句之間的區別你可以比較得出。

      sql語句4mysql> select * from (select alarm_publishSite,alarm_publishtime from alarm) as?t1 union (select theme_issueLocation,theme_publishtime from theme) as t2 union (select subject_issueLocation,subject_time from subject);

      報錯:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that?corresponds to your MySQL server version for the right syntax to use near 'as t2?union (select subject_issueLocation,subject_time from subject)' at line 1

      這個報錯是指 ”as t2?union (select subject_issueLocation,subject_time from subject)“這部分附近有語法問題。

      sql語句5mysql> select * from (select alarm_publishSite,alarm_publishtime from alarm) as?t1 union (select theme_issueLocation,theme_publishtime from theme) union (select subject_issueLocation,subject_time from subject);

      得出結果,如下圖:

      

      sql4語句與sql5語句之間的區別你可以比較得出。

      sql語句6mysql> select * from (select alarm_publishSite as location,alarm_publishtime as?time from alarm) as t1 union (select theme_issueLocation,theme_publishtime from?theme) union (select subject_issueLocation,subject_time from subject) order by?time desc;

      得出查詢結果,如下圖:

      

      在sql6語句中,主要就是給第一個子查詢中查詢的列名去了相應的別名,最后可以看到,查詢出來的結果表中的字段名就成了剛取的別名了。

轉載于:https://www.cnblogs.com/page-of-Hyman/p/4363453.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376129.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376129.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376129.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設立SharePoint2010列表的項目級權限

設置SharePoint2010列表的項目級權限 在SharePoint2010中我們經常會用到這樣的權限設置,在一個列表中可以存儲多個人輸入的數據,但每個人只能看到自己的那部分數據。也就是多個人共同維護一個列表,但各自只能查看、編輯、刪除自己錄入的那部分…

MySQL優化filler值_MySQL 性能優化神器 Explain 使用分析

簡介MySQL 提供了一個 EXPLAIN 命令, 它可以對 SELECT 語句進行分析, 并輸出 SELECT 執行的詳細信息, 以供開發人員針對性優化.EXPLAIN 命令用法十分簡單, 在 SELECT 語句前加上 Explain 就可以了, 例如:EXPLAIN SELECT * from user_info WHERE id < 300;準備為了接下來方便…

Codeforces Round #224 (Div. 2)

題目&#xff1a;http://codeforces.com/contest/382 A Ksenia and Pan Scales 一個求天平是否能夠平衡的題目。。。水題,注意一下結果的輸出就行。 1 #include <iostream>2 #include <cstdio>3 #include <cstring>4 #include <cstdlib>5 #include <…

二叉樹第i層中的所有結點_講透學爛二叉樹(二):圖中樹的定義amp;各類型樹的特征分析...

日常中我們見到的二叉樹應用有&#xff0c;Java集合中的TreeSet和TreeMap&#xff0c;C STL中的set、map&#xff0c;以及Linux虛擬內存的管理&#xff0c;以及B-Tree&#xff0c;B-Tree在文件系統&#xff0c;都是通過紅黑樹去實現的。雖然之前寫過《再談堆排序&#xff1a;堆…

node-webkit 開發環境搭建

node-webkit支持的操作系統類型&#xff1a; Linunx:32bit / 64bitWindows: win32Mac:32bit,10.7 開發環境 1&#xff0c;根據自己的操作系統下載響應的nw二進制文件&#xff0c;下載地址&#xff1a;https://github.com/rogerwang/node-webkit 2,建立基本開發目錄&#xff0c;…

mysql sqlsugar_.net core +mysqlSugar(最為簡單的增刪改查)

首先建立.net Core API - empty 這個就不說了然后創建新的Controller記得添加路由[Route("api/Users")]然后在Nuget Packages安裝 所需安裝包這里是用mysql所以下載如下的mysqlSugarCore(切記不要忘記安裝Mysql.Data)創建實例化class文件DbText.cs用于連接數據庫&…

關于eclipse的indigo版中文注釋時字體太小的問題(轉)

eclipse目前最新版代號indigo, 在win7上使用時中文注釋時字體太小的問題. 為什么會這樣? 首先我們應該知道, 在win7系統中, font是有"顯示"和"隱藏" 狀態的. 默認情況下, eclipse使用的默認字體courier new是處于 "隱藏"下的. 這樣當eclipse打開…

webdriver(python)學習筆記七——多層框架定位與智能等待

多層框架或窗口定位&#xff1a; switch_to_frame()switch_to_window()智能等待&#xff1a; implicitly_wait()現在web應用中經常會遇到框架如&#xff08;frame&#xff09;或窗口&#xff08;windows&#xff09;的應用&#xff0c;這樣定位就比較難&#xff0c;有時定位一個…

bbp代碼python_如何正確計算加密債券價格的BBP(Bollinger波段百分比)?

我試圖用這個代碼計算python中的BBP(Bollinger頻帶百分比)。然而&#xff0c;我的^{cd1>}函數返回^{{cd2>}或^{cd3>}用于^{cd4>}。當我使用一些硬幣收盤價時&#xff0c;令人困惑的是&#xff0c;這個函數返回正確的^{cd4>}數字(而不是inf)。這是我的python代碼…

ASP.NET學習路線圖

轉自&#xff1a;http://www.cnblogs.com/huangmeimujin/archive/2011/08/08/2131242.html 如果你已經有較多的面向對象開發經驗&#xff0c;跳過以下這兩步&#xff1a; 第一步 掌握一門.NET面向對象語言&#xff0c;C#或VB.NET 我強烈反對在沒系統學過一門面向對象(OO)語言的…

centos 多個mysql數據庫_CentOS6.5 一臺服務器同時安裝多個Mysql數據庫

建用戶與組groupadd mysqluseradd -g mysql mysql下載源碼&#xff1a;wget https://downloads.mariadb.org/interstitial/mariadb-10.1.10/source/mariadb-10.1.10.tar.gztar -xvf mariadb-10.1.10.tar.gz1、編譯&#xff1a;cmake . -DCMAKE_INSTALL_PREFIX/var/lib/mysql33…

MVC3學習 一 ViewBag和Html.Raw

ViewBag類似于JavaScript的語法&#xff0c;在賦值時動態賦值&#xff0c;比如ViewBag.Dog“哈哈” &#xff0c;這樣就會創建一個ViewBag.Dog的對象&#xff0c;供前端頁面調用。 在調用時&#xff0c;前臺頁面用razor方式&#xff0c;ViewBag 直接使用。 public class HomeCo…

PHPCMS源碼分析(二)

index.php中引入了phpcms框架的入口文件&#xff0c;下面我們看下這個入口文件 /phpcms/base.php define(IN_PHPCMS, true);//防止惡意調用//PHPCMS框架路徑 define(PC_PATH, dirname(__FILE__).DIRECTORY_SEPARATOR); //重新定義網站根目錄 if(!defined(PHPCMS_PATH)…

mysql 5.6密鑰_MySQL的密鑰文件不正確

我遇到了InnoDB的問題(表是最初的MyISAM,但是之前將它轉換為InndoB)表;我正在嘗試運行此查詢&#xff1a;SELECTposts.id,posts.post_titleFROMrss_posts AS postsINNER JOIN rss_feeds AS feeds ON posts.blog_idfeeds.idWHEREfeeds.blog_language1ORDER BYposts.post_date_db…

JS-取出字符串中重復次數最多的字符并輸出

/**取出字符串中重復字數最多的字符 */ var words sdfghjkfastgbyhnvdstyaujskgfdfhlaa;      //創建字符串 var word,                          //單個字符length;                          //該字符的長度 //…

windows下查看靜態庫和動態庫的導出函數

在window下查看動態庫的導出函數可以用vs自帶的Depends工具&#xff1b; 查看靜態庫的信息要用命令行來實現&#xff1a; dumpbin /LINKERMEMBER Test.lib > 1.txt 上面的功能是將靜態庫的信息導出保存在1.txt文件中&#xff0c;這樣就可以在1.txt文件中查看相關的信…

linux ll 文件大小單位_該如何改善 Linux 系統性能?

系統性能一直是一個受關注的話題&#xff0c;如何通過最簡單的設置來實現最有效的性能調優&#xff0c;如何在有限資源的條件下保證程序的運作&#xff0c;ulimit 是我們在處理這些問題時&#xff0c;經常使用的一種簡單手段。ulimit 是一種 linux 系統的內鍵功能&#xff0c;它…

深入Javascript中apply、call、bind

最近在看一下node package的源碼&#xff0c;發現很多里面都包含了function這個對象的apply、call、bind這三個方法&#xff0c;于是想拿出來再看看。。 apply、call 在 javascript 中&#xff0c;call 和 apply 都是為了改變某個函數運行時的上下文&#xff08;context&#x…

優秀案例!教您如何設計現代簡約風格網頁

我們看到越來越多的設計師開始擁抱簡約的網站設計方法&#xff0c;消除網站不必要的元素&#xff0c;保留真正重要的內容&#xff0c;干凈、直觀的設計&#xff0c;就像今天的我們將展示的這些網站。 下面是一組不同風格的簡約設計的網站例子&#xff0c;美麗的導航、整潔的菜單…

怎么清理mysql的死鏈接_什么是死鏈接?如何正確處理死鏈接

什么是死鏈接&#xff1f;我們應該如何正確處理死鏈接呢&#xff1f;小剛SEO為你解答。什么是死鏈接&#xff1f;因鏈接更改或搜索引擎所收錄的網站路徑被刪除了&#xff0c;形成沒法打開的死鏈接。死鏈接的危害&#xff1a;1.死鏈數據過多時&#xff0c;對網站訪問體驗和用戶轉…