首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SQL 查詢技巧:如何透過一條記錄關聯查詢多條記錄(1 對 N)

     編輯:程式設計疑難解答

場景

表 1(主表)與表 N(從表)通過外鍵關聯,需根據主表 ID 查詢所有關聯的從表記錄。

標準寫法

-- 內連接(僅返回有匹配的主表行)
SELECT n.*
FROM table_1 AS o
JOIN table_n AS n ON o.id = n.parent_id
WHERE o.id = ?;

-- 左連接(主表無匹配也返回,n.* 為 NULL)
SELECT n.*
FROM table_1 AS o
LEFT JOIN table_n AS n ON o.id = n.parent_id
WHERE o.id = ?;

子查詢寫法

SELECT * FROM table_n WHERE parent_id = (SELECT id FROM table_1 WHERE ...);

ORM 框架映射

  • MyBatis:<resultMap> 中使用 <collection> 映射 List。
  • Hibernate/JPA:@OneToMany + @JoinColumn。

效能提示

外鍵欄位 parent_id 必須建立索引;大數據量下考慮分頁或游標查詢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved