mysql不用left join_MySQL在右表数据不唯一的情况下使用left join的方法_MySQL - join
一.Join語法概述join 用于多表中字段之間的聯系,語法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表;table2:右表。JOIN 按照功能大致分為如下三類:INNER JOIN(內連接,或...
1.left join 基本用法
mysql left join 語句格式
A LEFT JOIN B ON 條件表達式
left join 是以A表為基礎,A表即左表,B表即右表。
左表(A)的記錄會全部顯示,而右表(B)只會顯示符合條件表達式的記錄,如果在右表(B)中沒有符合條件的記錄,則記錄不足的地方為NULL。
例如:news 與 news_category表的結構如下,news表的category_id與news_category表的id是對應關系。
news 表
news_category 表
顯示news表記錄,并顯示news的category名稱,查詢語句如下
select a.id,a.title,b.name as category_name,a.content,a.addtime,a.lastmodify
from news as a left join news_category as b
on a.category_id = b.id;
查詢結果如下:
因 news_category 表沒有id=4的記錄,因此news 表中category_id=4的記錄的category_name=NULL
使用left join, A表與B表所顯示的記錄數為 1:1 或 1:0,A表的所有記錄都會顯示,B表只顯示符合條件的記錄。
2.left join 右表數據不唯一解決方法
但如果B表符合條件的記錄數大于1條,就會出現1:n的情況,這樣left join后的結果,記錄數會多于A表的記錄數。
例如:member與member_login_log表的結構如下,member記錄會員信息,member_login_log記錄會員每日的登入記錄。member表的id與member_login_log表的uid是對應關系。
member 表
member_login_log 表
查詢member用戶的資料及最后登入日期:
如果直接使用left join
select a.id, a.username, b.logindate
from member as a
left join member_login_log as b on a.id = b.uid;
因member_login_log符合條件的記錄比member表多(a.id = b.uid),所以最后得出的記錄為:
但這并不是我們要的結果,因此這種情況需要保證B表的符合條件的記錄是空或唯一,我們可以使用group by來實現。
select a.id, a.username, b.logindate
from member as a
left join (select uid, max(logindate) as logindate from member_login_log group by uid) as b
on a.id = b.uid;
總結:使用left join的兩個表,最好是1:1 或 1:0的關系,這樣可以保證A表的記錄全部顯示,B表顯示符合條件的記錄。
如果B表符合條件的記錄不唯一,就需要檢查表設計是否合理了。
以上就是MySQL在右表數據不唯一的情況下使用left join的方法_MySQL的內容,更多相關內容請關注點凡PHP技術博客(www.df5d.com)!
一.Join語法概述join 用于多表中字段之間的聯系,語法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表;table2:右表。JOIN 按照功能大致分為如下三類:INNER JOIN(內連接,或...
...前一貫的寫作風格,以簡單易懂的示例幫助大家了解各種join的區別?!槭裁葱枰猨oin 為什么需要join?join中文意思為連接,連接意味著關聯即將一個表和多個表之間關聯起來。在處理數據庫表的時候,我們經常會...
JOIN方法也是連貫操作方法之一,用于根據兩個或多個表中的列之間的關系,從這些表中查詢數據。join通常有下面幾種類型,不同類型的join操作會影響返回的數據結果。INNER JOIN: 如果...
在關系型數據庫中,join操作是將不同的表中的數據聯合在一起時非常通用的一種做法。首先讓我們看看join是如何操作的,然后我們探
1、簡介
在關系型數據庫中,join操作是將不同的表中的數據聯合...
Join是關系型數據庫系統的重要操作之一,SQL Server中包含的常用Join:內聯接、外聯接和交叉聯接等1.1.1 摘要 Join是關系型數據庫系統的重要操作之一,SQL Server中包含的常用Join:內聯接、外聯接和交叉聯...
hash join(HJ)是一種用于equi-join(而anti-join就是使用NOT IN時的join)的技術。在Oracle中,它是從7.3開始引入的,以代替sort
一、 hash join概念
hash join(HJ)是一種用于equi-join(而anti-
一.Join語法概述join 用于多表中字段之間的聯系,語法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表;table2:右表。JOIN 按照功能大致分為如下三類:INNER JOIN(內連接,...
本文主要介紹了Mysql join操作的相關資料,需要的朋友可以參考下,希望能幫助到大家。 join的類型1. 內聯結:將兩個表中存在聯結關系的字段符合聯結關系的那些記錄形成記錄集的聯結。2. 外聯結:分為外...
關于Mysql 中 inner join , left join , right join的區別 ,他們分別應用在什么情景呢? 現在我們 有2個表 一個是 person 表 一個是 Orders表 結構如下: person表 Id_P LastName FirstName Address City
bitsCN.com
mysql的join優化 1. 多表連接類型1. 笛卡爾積(交叉連接) 在MySQL中可以為CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT * FROM table1 CROSS JOIN table2 SELE
總結
以上是生活随笔為你收集整理的mysql不用left join_MySQL在右表数据不唯一的情况下使用left join的方法_MySQL - join的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 多级分类_数据库多级分类相关
- 下一篇: verilog 给数组集体赋值_Veri