国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 12:36:44
字體:
來源:轉載
供稿:網友

對于關聯查詢本人在開發應用中使用得很少,因為我處理數據量都非常的大所以關聯對我來說可能導致數據庫訪問緩存,今天看到一朋友寫了一篇關于mysql一對多關聯查詢的時候篩選條件看了有點意思于是與大家分享.

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

有的人建議進行表連接來進行篩選,不過那樣很麻煩,小濤我斷然拒絕了,然后我采用了另一個巧妙的方法.

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

users 表和 auth_token_log表是一對多,現在是把user的信息找出來關聯上一些 auth_token_log表的數據,因為a表是多的一方,要多他的數據進行一些條件匹配,這個sql目的是查出每個用戶的最新的log記錄.

原始寫法,代碼如下:

  1. SELECT 
  2.  users.first_name, 
  3.  users.email_address, 
  4.  users.tp_user_id, 
  5.  users.tp_username, 
  6.  auth_token_log.module_access, 
  7.  auth_token_log.created_date 
  8. FROM 
  9.  users 
  10.  INNER JOIN auth_token_log ON users.id = auth_token_log.user_id 
  11. WHERE 
  12.  auth_token_log.id in
  13.   SELECT 
  14.   max(id) 
  15. FROM 
  16.   auth_token_log 
  17. WHERE 
  18.   auth_token_log.user_id = users.id 
  19.  ) 

自己的理解,代碼如下:

  1. SELECT 
  2.  users.first_name, 
  3.  users.email_address, 
  4.  users.tp_user_id, 
  5.  users.tp_username, 
  6.  auth_token_log.module_access, 
  7.  auth_token_log.created_date 
  8. FROM 
  9.  users 
  10.  INNER JOIN auth_token_log ON users.id = auth_token_log.user_id 
  11. WHERE 
  12.  auth_token_log.id in
  13.   SELECT 
  14.   max(auth_token_log.id) 
  15. FROM 
  16.   auth_token_log, 
  17.   users 
  18. WHERE 
  19.   auth_token_log.user_id = users.id 
  20. GROUP BY 
  21.   users.id 
  22.  )   

對于原始寫法的理解是,先查出如下代碼的記錄:

  1. SELECT 
  2.  × 
  3. FROM 
  4.  users 
  5.  INNER JOIN auth_token_log ON users.id = auth_token_log.user_id 
  6. //開源代碼Vevb.com 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额敏县| 沁水县| 嘉定区| 平昌县| 喀什市| 九江县| 汪清县| 成武县| 邵东县| 白水县| 策勒县| 万源市| 巴青县| 澜沧| 西安市| 屏东市| 偃师市| 离岛区| 化州市| 娄烦县| 增城市| 伊宁县| 准格尔旗| 攀枝花市| 双鸭山市| 延安市| 包头市| 德庆县| 炎陵县| 彭州市| 达州市| 奉新县| 明光市| 宿州市| 花莲县| 仪征市| 蒙山县| 阜康市| 龙陵县| 乌兰县| 庆阳市|