mysql一對多關聯查詢的時候篩選條件

2021-09-06 13:28:33 字數 1774 閱讀 3387

mysql實現users 表和 logoin_log表是一對多, 現在是把user的資訊找出來 關聯上一些 logoin_log表的資料, 因為a表是多的一方,要多他的資料進行一些條件匹配,這個sql目的是查出每個使用者的最新的log記錄

有的人建議進行表連線來進行篩選,不過那樣很麻煩,小濤我斷然拒絕了,然後我採用了另乙個巧妙的方法:

列表的時候採用先查乙個表,這裡查的是users表,然後再傳值到方法,該方法進行封裝查詢logoin_log,此時要通過id倒序排列,返回相應的值,這樣就可以獲得最新的log記錄了,這樣是不是更簡單呢,得意……堅決用表連線的盆友們,趕快試試這種方法吧。

users 表和 auth_token_log表是一對多, 現在是把user的資訊找出來 關聯上一些 www.111cn.net auth_token_log表的資料, 因為a表是多的一方,

要多他的資料進行一些條件匹配

這個sql目的是查出每個使用者的最新的log記錄

原始寫法

**如下 複製**

select

users.first_name,

users.email_address,

users.tp_user_id,

users.tp_username,

auth_token_log.module_access,

auth_token_log.created_date

from

users

inner join auth_token_log on users.id = auth_token_log.user_id

where

auth_token_log.id in(

select

max(id)

from

auth_token_log

where

auth_token_log.user_id = users.id

)自己的理解

**如下 複製**

select

users.first_name,

users.email_address,

users.tp_user_id,

users.tp_username,

auth_token_log.module_access,

auth_token_log.created_date

from

users

inner join auth_token_log on users.id = auth_token_log.user_id

where

auth_token_log.id in(

select

max(auth_token_log.id)

from

auth_token_log,

users

where

auth_token_log.user_id = users.id

group by

users.id

)  對於原始寫法的理解是

先查出**如下 複製**

select

×from

users

inner join auth_token_log on users.id = auth_token_log.user_id

的記錄,  然後針對每一行記錄x,拿出這一行x與 乙個新的auth_token_log表做join,然後篩選出 log.user_id = x..user.id的所有記錄, 然後查出max(id), 這就是最新的log記錄的 id

更多詳細內容請檢視:

mysql 一對多關聯查詢 練習

場景 假設乙個學生有多門課程,一門課程有多個學生 雖然兩者是多對多關係,但本次假設為一對多 學生表 insert into student values 1 張三 66 3 insert into student values 2 李四 77 3 insert into student values...

Mybatis 一對多關聯查詢

1.配置檔案 select u.id u.username u.address u.u.birthday o.id oid,o.number o.createtime o.note from user u left join order o on o.user id u.id 2.介面名字3.ret...

MyBatis 一對多關聯查詢

上篇學習了一對一關聯查詢,這篇我們學習一對多關聯查詢。一對多關聯查詢關鍵點則依然是配置resultmap,在resultmap中配置collection屬性,別忽略了oftype屬性。建立表author 表blog,構建一對多的查詢場景。建立author blog model。author類中主要是...