mysql結果去重和條件查詢where的使用

2021-01-07 免費模板網

昨天介紹了mysql裡面的輸出函數,小編覺得日期函數屬於見的比較多的,mysql怎麼輸出當前時間的,我們可以用到now這個函數;效果如下

mysql輸出當前時間

下面擴展一下mysql裡面格式化時間戳的常用函數

獲取前一天日期

select date_sub(curdate(),interval 1 day) 獲取前一天日期;

select date_sub(curdate(),interval 1 year) 獲取上一年日期;

select date_sub(curdate(),interval 1 month) 獲取上個月日期;

SELECT YEAR(DATE_SUB(CURDATE(),INTERVAL 0 year)) 獲取當前年份;

SELECT YEAR(DATE_SUB(CURDATE(),INTERVAL 1 year)) 獲取上一年份;

SELECT month(DATE_SUB(CURDATE(),INTERVAL 0 month)) 獲取當前月份;

SELECT month(DATE_SUB(CURDATE(),INTERVAL 1 month)) 獲取上一月份;

SELECT day(DATE_SUB(CURDATE(),INTERVAL 0 DAY)) 獲取當前幾號;

SELECT day(DATE_SUB(CURDATE(),INTERVAL 1 DAY)) 獲取前一天幾號;

有興趣的朋友可以都輸入一下看看代碼運行結果,後期在項目中經常會用到,比如統計出這個月文章閱讀最多的文章,或者上周文章點擊最好的數據。等等

下面介紹今天的話題,在mysql查詢結果中去重,比如一個表中欄位關係是一對多,或者多對多的關係。我們需要用到關鍵詞DISTINCT

實際運用到的案例在項目中一個ip訪問多次你的網站,但是結果裡面不需要看到重複的ip,這個時候DISTINCT就需要排上用處了。

我們上demo實際運行一下。

日誌表

比如這個log表,我們需要查詢出哪些ip有出現過。屬於命令SELECT DISTINCT ip FROM v9_log;

mysql執行結果

這樣我們就查詢出了不同的ip出現的結果。

mysql結果去重和條件查詢where的使用

執行完畢提示有156行受到影響,說明有156條數據,我們也可以用統計函數count進行得出需要的數據

mysql結果去重和條件查詢where的使用

覺得數據顯示的太多,只需要顯示最前面10條數據,或者時間最新的10條等等 這時候就需要用到where的條件查詢了。我們看看demo

mysql結果去重和條件查詢where的使用

我們可以看到使用了where 和 limit的應用,還可以擴展行轉列,某一段時間某個ip出現的最多等等複雜的寫法,這些就構成了一些網站功能的實現,有時候也可以在程序php或是asp裡面進行處理。比如msyql或者的結果有相同的數據,php數組裡面有去重函數也是實現目標的一種方式,或者根據mysql獲取的結果進行重新整合使用各種函數的處理得到一個星期點擊最多的ip等等。可以擴展的很深很深。今天的內容就介紹到這裡。有興趣的朋友可以把上面說的內容都實現哦。

相關焦點

  • MySQL之where的條件查詢
    各位小夥伴們大家好,好久不見哈,在之前的文章中,小編介紹了一些資料庫的相關知識,這次小編要介紹的是MySQL當中的條件查詢。條件查詢:where子句後跟條件。20的人:select * from student1 where age>=20;依此類推,如果要查詢年齡小於或者小於等於或者等於多少歲,改變一下運算符和數字就好了。
  • SQL 查詢優化之 WHERE 和 LIMIT 使用索引的奧秘
    通過 acct_id 過濾出來的結果集在 1w 條左右。查詢結果:第一條要5.018s,第二條0.016s為什麼會是這樣的結果呢?第一,acct_id和create_time都有索引,不應該出現5s查詢時間這麼慢啊 仔細觀察會發現,索引只使用了idx_create_time,沒有用到idx_acct_id。這能解釋第一條sql很慢,因為where查詢未用到索引,那麼第二條為什麼這麼快?
  • MySQL全面瓦解—子查詢和組合查詢
    from型子查詢:把內層的查詢結果當成臨時表,供外層sql再次查詢,所以支持的是表子查詢。  where或having型子查詢:指把內部查詢的結果作為外層查詢的比較條件,支持標量子查詢(單列單行)、列子查詢(單列多行)、行子查詢(多列多行)。
  • Mysql使用exists的子查詢
    形式:where exists ( 任何子查詢 )含義:該子查詢如果「有數據結果」, 則該exists()的結果為「true」>該子查詢如果「沒有數據結果」,則該exists()的結果為「false」特別注意:1,該子查詢,如果其僅僅是為了得到「有沒有數據」的結果,則通常此時對主查詢就失去應用意義;2,實際上,該子查詢,通常都需要在子查詢(內部)中來使用主查詢(外部)的某些欄位作為條件數據,這樣才能具有一定的實用意義
  • MySQL優化:學會使用show profile和trace分析慢查詢
    MySQL優化:定位慢查詢的兩種方法以及使用explain分析SQL在上一節我們學習了定位慢 SQL 及使用 explain 分析慢 SQL,我們也提到了分析慢 SQL 還有 show profile 和 trace 等方法,本節就重點補充學習這兩種方法。
  • mysql運算符and和or的使用
    今天我們介紹2個新的關鍵詞and和or,和其他程式語言感覺很類似吧,如果條件1和條件2同時成立,或者條件1或者條件2滿足其中的一條,就執行什麼操作。我們舉個例子,在資料庫中的體現。我們來看看demo我們來看運行demoSELECT username FROM de_member where groupid=2 and userid<20顯示結果為
  • mysql條件查詢,最簡單的一種,你知道嗎?
    在上一篇文章中我們學習了在php中怎樣查詢資料庫中的數據,哪些數據都是直接獲取一個表中的所有數據,全部拿過來,沒有經過過濾,很多數據對於我們來說暫時是用不上的,這就相當於浪費了帶寬,不利於提高數據處理的效率,所以,我們非常有必要在抓取數據的時候進行過濾,今天就介紹mysql的條件查詢,最簡單的一種
  • 玩轉Mysql系列 - 第25篇:sql中where條件在資料庫中提取與應用淺析
    mysql索引原理詳解mysql索引管理詳解如何正確的使用索引?上面3篇文章沒有讀過的最好去讀一下,不然後面的內容會難以理解。問題描述 一條SQL,在資料庫中是如何執行的呢?相信很多人都會對這個問題比較感興趣。
  • mysql的查詢、子查詢及連接查詢
    查詢的五種子句where子句(條件查詢):按照「條件表達式」指定的條件進行查詢。查詢結果集可以當成表看待。臨時表要使用一個別名。)然後將這個結果集作為一張臨時表,巧妙的使用group by 查詢出每個類別下的第一條記錄,即為每個類別下商品id最大。
  • MySQL如何完成一次查詢?
    那麼從發出一條sql指令到返回結果mysql都做了什麼事情呢?mysql完成一次查詢過程是比較複雜的,在說明查詢過程前先介紹一下它的基礎概念和結構原理來幫助理解。下面從四個方面介紹,分別是mysql語句,mysql結構原理,mysql查詢過程,最後設置幾個有趣問題。
  • MySQL查詢語句中的IN 和Exists 對比分析
    tabA.x in (select x from tabB where y>0 );其執行計劃:(1)執行tabB表的子查詢,得到結果集B,可以使用到tabB表的索引y;(2)執行tabA表的查詢,查詢條件是tabA.x在結果集B裡面,可以使用到tabA表的索引x。
  • 06-mysql基礎-mysql中的DQL-子查詢
    在上一期05-mysql基礎-mysql中的DQL-連接查詢的推文中我們學習了mysql的連接查詢知識,本期我們將繼續學習DQL中的子查詢。子查詢介紹含義:出現在其他語句中的select語句,成為子查詢或內查詢外部的查詢語句,成為主查詢或外查詢分類:按子查詢出現的位置: select後面 僅支持標量子查詢 from後面 支持表子查詢 where或having後面 支持標量子查詢(*) 列子查詢(*) 行子查詢
  • MySQL 這該死的 「IN (子查詢)」
    一、什麼是子查詢簡而言之,子查詢就是嵌套在主查詢裡的查詢,如:SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);SELECT * FROM t1 JOIN (SELECT * FROM t2 WHERE id%2 = 0) tmp ON t1.id = tmp.ref_id
  • 聊聊mysql分組查詢group by以及分組條件having的用法
    今天和大家一起學習一下mysql的分組查詢group by的使用方法,也是重新回憶和複習一下。我們來看一下分組查詢的語法:1、語法:group by + 分組的欄位;下面我們來看一張學生表信息:我們現在需要實現這樣一個需求:1、按性別分組,分別查詢出男、女學生的數學平均分
  • 一條查詢SQL在MySQL中是怎麼執行的
    使用一段時間,或者程序裡面判斷執行過一個佔用內存的大查詢後,斷開連接,之後要查詢再重連。如果MySQL版本是5.7或以上版本,可以在每次執行一個比較大的操作後,通過執行mysql_reset_connection來重新初始化連接資源。
  • mysql中的where和having的區別
    分享關於mysql中的where和having子句的區別,本文主要分享對象為剛剛接觸sql的新人,下面將結合實際案例分析:下面以一個例子來具體的講解:1. where和having都可以使用的場景1)select addtime,name from dw_users where addtime> 15000000002)select addtime,name from dw_users having addtime> 1500000000解釋:上面的
  • mysql修改語句UPDATE的使用
    前面幾篇文章我們介紹了資料庫的插入,查詢的介紹。基本常用的就是msyql的增刪改查,差不多就是添加數據,刪除數據,修改數據,查詢出想要的數據。今天介紹一下update的使用,這個關鍵詞就是修改資料庫語句。
  • SQL中where條件的提取
    是 個冗長而複雜的過程,而一條sql中where條件的提取可以相對的歸納出幾個步驟。SQL中where條件的提取簡單歸納為三步:index Key - first key/last key-確定索引結構中查詢範圍index Filter - 確定索引中的過濾條件(
  • 面對MySQL 查詢索引失效,程式設計師的六大優化技巧!
    第二步查詢緩存:建立連接之後,mysql拿到一個查詢請求後,會先查詢緩存中之前是否執行過這條語句,如果查詢緩存命中,則查詢結果直接返回給客戶端,如果查詢緩存不命中,就會繼續後面的執行階段。完成以後,執行結果會被存入查詢緩存中。大多數情況下不建議使用查詢緩存。
  • mysql資料庫select查詢語句
    select的相關語句在mysql中用的非常多,介紹一下。條件 ;where 添加查詢的限制條件比較運算符 >、<、>=、<=、!=、<> 邏輯運算符 and or not模糊查詢 like %代表多個 _代表一個 例: %like% 、_like%4 查詢結果排序5 單欄位排序: order