1. 程式人生 > >Mysql聯表查詢、查詢近期某段時間內的資料等

Mysql聯表查詢、查詢近期某段時間內的資料等

最近使用mysql時用到的一些功能,此處做記錄方便日後查閱。

聯表查詢

1. 引用兩個表

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

2. JOIN

JOIN(INNER JOIN): 兩表都滿足的組合
LEFT JOIN: 以A表為基礎,A表的全部資料,B表有的則組合,沒有的則為null
RIGHT JOIN: 以B表為基礎,B表的全部資料,A表有的則組合,沒有的則為null
FULL JOIN: 全連線,兩表相同的組合在一起,A表有,B表沒有的資料顯示為null,同樣B表有,A表沒有的顯示為null

用法:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

這裡的條件ON,兩表的欄位可以不同,比如:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_O
ORDER
BY Persons.LastName

在SELECT欄位的時候,通過表名顯式指出欄位名屬於哪個表,防止重複欄位混淆。

查詢最近90天的資料

定義和用法

DATEDIFF() 函式返回兩個日期之間的天數。

語法

DATEDIFF(date1,date2)

date1 和 date2 引數是合法的日期或日期/時間表達式。
註釋:只有值的日期部分參與計算。

例項

例子 1

使用如下 SELECT 語句:

SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate

結果:

DiffDate
1

例子 2

使用如下 SELECT 語句:

SELECT DATEDIFF('2008-12-29','2008-12-30') AS DiffDate

結果:

DiffDate
-1

類似的還有TIMEDIFF,精確到毫秒單位。

使用DATEDIFF函式,可以通過WHERE條件篩選出最近某段時間內的資料。

插入重複主key資料時忽略插入

1.insert ignore into

當插入資料時,如出現錯誤時,如重複資料,將不返回錯誤,只以警告形式返回。

例:

INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')

2.on duplicate key update

當primary或者unique重複時,則執行update語句,如update後為無用語句,如id=id,則同1功能相同,但錯誤不會被忽略掉。例如,為了實現name重複的資料插入不報錯,可使用以下語句:

INSERT INTO books (name) VALUES ('MySQL Manual') ON duplicate KEY UPDATE id = id

3.insert … select … where not exist

根據select的條件判斷是否插入,可以不光通過primary 和unique來判斷,也可通過其它條件。例:

INSERT INTO books (name) SELECT 'MySQL Manual' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

4.replace into

如果存在primary or unique相同的記錄,則先刪除掉。再插入新記錄。

REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books

相關推薦

Mysql查詢查詢近期時間資料

最近使用mysql時用到的一些功能,此處做記錄方便日後查閱。 聯表查詢 1. 引用兩個表 SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders W

Linux 中 查詢檔案中時間資料 個人喜歡使用sed

cat cat命令連線檔案並列印到標準輸出裝置上,cat經常用來顯示檔案的內容。 cat m1 (在螢幕上顯示檔案ml的內容) cat m1 m2 (同時顯示檔案ml和m2的內容) cat m1 m2 > file (將檔案ml和m2合併後放入檔案file中) 可以在

mysql統計日期中時間資料

中間的動態拼接是為了防止隔天查詢(如17:30-8:30),當然就收資料後要進行處理讓後在傳入 SELECT count(DISTINCT barcode) AS count,DATE_FORMAT(date, '%Y-%m-%d') AS ti FROM ag_cpparts WHERE DATE_

java根據日期獲取周幾和獲取時間周幾的日期

整理兩個日期的方法。 根據日期獲取當天是周幾 /** * 根據日期獲取當天是周幾 * @param datetime 日期 * @return 周幾 */ public static String dateToWeek(String datetime

Git統計時間的程式碼量

對當前分支,統計'2018-08-25'~'2018-12-31'時間內的程式碼量命令: git log  --since='2018-08-25' --until='2018-12-31' --format='%aN' |&

JAVA 獲取時間的所有日期集合

獲取指定日期 public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFo

如何快速擷取時間的日誌

在排除故障時,需要分析發生故障的原因,避免再次出現同樣的問題,需要對日誌進行分析,擷取故障前後時間段的日誌。通常用正則表示式來獲取某段時間的內的日誌,比較繁瑣。可以通過awk方便簡捷的實現。 我這裡以擷取nginx訪問日誌為例: 檢視21/Jul/2014:14:37

JAVA獲取時間的所有日…

import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class FindDa

php按周取時間段&&PHP獲取指定時間段之間的 年,月,天,時,分,秒&php獲取時間每個月的方法,返回由這些月份組成的陣列

<?php PHP獲取指定時間段之間的 年,月,天,時,分,秒 Class Utils { /** * format MySQL DateTime (YYYY-MM-DD hh:mm:ss) 把mysql中查找出來的資料格式轉換成時間秒數

MR例子(統計各個手機號在時間產生的總流量)

目的:統計各個手機號在某段時間類產生的總流量 準備檔案 (已經上傳到hdfs上 檔名data.txt) 上圖中對應的欄位如下圖 檔案及程式碼分析 所給的檔案是每一個使用者每一次上網產生的流量,先如今需要將相同使用者進行聚合。

mysql查詢

mysql聯表查詢1、查詢4個表(查詢a、b、c、d表的幾個字段,然後from後面是相當於將表名賦予一個別名即a、b、c、d。然後where是設置一些條件)select a.name,a.quota_mailbox,a.quota_netdisk,a.limit_send,a.limit_recv,b.rea

mysql查詢腳本

mysql聯表查詢腳本mysql聯表查詢腳本:#!/bin/sh kkmailmysqlpass=$(cat /usr/local/kk-mail/config/custom.conf | grep -w "pass" | awk -F" " '{print $

MySQL設定詳細說明查詢操作)JDBC基礎

登陸資料庫 mysql -u(名字)root -p(密碼)****** 檢視所有資料庫 show databases 建立資料庫 create database (名稱)ztest 選擇資料庫 use (名稱)ztest 刪除資料庫 drop database (名稱

MySQL查詢中的驅動,優化查詢

一、為什麼要用小表驅動大表 1、驅動表的定義 當進行多表連線查詢時, [驅動表] 的定義為: 1)指定了聯接條件時,滿足查詢條件的記錄行數少的表為[驅動表] 2)未指定聯接條件時,行數少的表為[驅動表](Important!) 忠告:如果你搞不清楚該讓誰做驅動表、

MySQL 查詢

關係型資料庫,免不了表之間存在各種引用與關聯。這些關聯是通過主鍵與外來鍵搭配來形成的。所以,取資料時,很大情況下單張表無法滿足需求,額外的資料則需要將其他表加入到查詢中來,這便是 JOIN 關鍵字完成的操作。 MySQL 中 JOIN, CROSS JO

MySQL之變量查詢緩存和索引

total xpl select sch XP 反斜杠 指向 轉義字符 關閉 MySQL中的系統數據庫mysql數據庫:是mysql的核心數據庫,類似於sql server中的master庫,主要負責存儲數據庫的用戶、權限設置、關鍵字等mysql自己需要使用的控制和管理信息

連結串列實現學生資訊(含輸入輸出計算查詢插入刪除功能)

連結串列實現學生資訊表(含輸入、輸出、計算表長、查詢、插入、刪除等功能) #include <stdio.h> #include <stdlib.h> void menu() { printf("make your choice \n"); pr

經典的Mysql的關聯查詢。。。

Student(S#,Sname,Sage,Ssex)學生表     S#:學號;Sname:學生姓名;Sage:學生年齡;Ssex:學生性別 Course(C#,Cname,T#)課程表             C#,

mysql統計數查詢行轉列

今天在統計查詢時遇到以下問題,自己做個記錄: 部門A在A地區釋出一條資料庫型別資源,在B地區釋出一條檔案型別資源。存在db表: db 部門 地區 名稱 。。。 部門A 湖南 資料庫資源1 。。。 部門A 河北 資料庫資源2 。。。 部門B也在A地區釋出一條檔案型別資源。存

mysql自關聯查詢

好久沒寫sql了,這個系統居然要求是全棧型別。從後到前都要做(我的js都忘光了),先記錄下一個sql這塊吧。 一需求: 現在有個表crm,裡面存放著:id,recommended_id,其中recommended_id屬於id範圍,就是推薦人的id。 現在的需求是,查詢全部