MySQL: select 語句

來源:互聯網
上載者:User

標籤:begin   參考   沒有   關鍵字   width   blog   images   com   idt   

1. order by (排序)

   通常使用一個欄位作為參考標準,進行排序。

   文法:order by 【欄位】 asc|desc;(升序、降序)

   tip : 校對規則 決定 排序關係。

          允許多欄位排序(先按第一個欄位排序,當出現不能區分的時候,按第二個欄位進行排序,依此類推)。

【舉個栗子】 對於下表,輸入select * from tb_name; 時,會按照輸入順序依次顯示表中的資料:

         

       當需要對錶中資料按照欄位 stu_score 進行降序排列時,在輸入語句後加上order by stu_score desc .

        

       如果不註明升序、降序,預設使用升序:

       

      若使用多欄位排序,eg. 先按stu_score進行排序,若分數相同,再按照開課時間date_begin進行排序,語句為:

       select * from tb_name order by stu_score desc , date_begin , asc;

tip : order by是對檢索出來的資訊進行排序,因此需要寫在where語句後。

      如果是分組,則應該使用對分組欄位進行排序的group by文法。

2. limit(限制獲得的記錄數量)

   limit 發生在排序、檢索等行為之後,所以 limit 出現在最後。

   對於下面的資料表,若限制只顯示其中的1個資料,則輸出結果為右圖:

                                         

   即會按照最初資料輸入的順序,取第一組資料進行輸出。

   也可以在進行完排序後,限制只輸出前3名:

          

   文法:limit 位移量 總記錄數;

           位移量:截取的開始點。      總記錄數:截取的長度。

          若不寫位移量,預設從0開始。

3. distinct(去除重複記錄)(與all相對應)

    當在表exam_stu中,顯示欄位stu_score中的所有資料時,結果如下:

    

   若想去除其中的重複記錄,可使用一下語句,於是兩個95分便只剩下了一個:

    

   重複記錄的標準是按照查詢的欄位來確定的,當語句為select distinct * 時,只有當所有欄位都一樣時,才認為兩條資料重複;

   當語句是 select distinct stu_score時,當兩條資料的stu_score相同時,認為二者重複;

   當語句是select distinct stu_score,stu_name時,必須分數和名字一樣,才認為二者重複。

4. union查詢(聯集查詢)

    將多條 select 語句合并到一起,稱為聯合操作。

    使用 union 關鍵字,聯合兩個 select 語句即可。

【舉個栗子】要在表中查詢給php0228班和php0331班上課天數最多的兩個老師,語句為

                select teacher_name,days from teacher_class where class_name=‘php0228‘ order by days desc limit 1;

                select teacher_name,days from teacher_class where class_name=‘php0331‘ order by days desc limit 1;

             這兩個分開的語句的確可以尋找出想要的結果,但是若要做聯集查詢呢?

            語句是 :(語句1)union(語句2);

                          但這種寫法會將重複的記錄刪除,若想保留所有記錄,哪怕重複,可用一下格式:

                        (語句1)union all (語句2); 

tip:在使用union的情況下,排序有幾點需要注意。

     子語句的排序:

       ① 將子語句包裹在子括弧內;

       ② 子語句的order by只有在配合limit使用時,才生效。原因是:union會對沒有limit的字句的order by最佳化(忽略)。

若相對union的結果進行排序,使用如下語句:

     (語句1)union(語句2)order by days ;

注意: ① 多個 select 語句的檢索到的欄位數必須一致;更嚴格的是,資料類型上也應該要求一致(但是mysql內部會做類型轉換處理,要              求是能轉換成功)。

MySQL: select 語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.