首頁 > 資料庫 > mysql教程 > 如何有效率地檢索SQL資料庫中的多筆相關記錄?

如何有效率地檢索SQL資料庫中的多筆相關記錄?

Patricia Arquette
發布: 2024-12-28 14:28:16
原創
689 人瀏覽過

How to Efficiently Retrieve Multiple Related Records in SQL Databases?

如何檢索與單一記錄相關的多筆記錄

在資料庫管理中,經常需要從多個表中獲取數據,這些表是透過關係聯繫起來。本文示範了一種檢索有關特定組織及其員工名字的所有資訊的有效方法。

取得多個相關記錄的概念需要使用群組串聯,這在 SQL 中並未標準化-92 或 SQL-99。因此,針對特定資料庫的解決方案是必要的。

MySQL

MySQL 提供了用於群組串聯的 GROUP_CONCAT 函數。要擷取所需的數據,請執行以下查詢:

select 
  o.ID, o.Address, o.OtherDetails,
  GROUP_CONCAT( concat(e.firstname, ' ', e.lastname) ) as Employees
from 
  employees e 
  inner join organization o on o.org_id=e.org_id
group by o.org_id
登入後複製

PostgreSQL

PostgreSQL 9.0 引入了STRING_AGG 函數:

select 
  o.ID, o.Address, o.OtherDetails,
  STRING_AGG( (e.firstname || ' ' || e.lastname), ', ' ) as Employees
from 
  employees e 
  inner join organization o on o.org_id=e.org_id
group by o.org_id
登入後複製

select 
  o.ID, o.Address, o.OtherDetails,
  LISTAGG(e.firstname || ' ' || e.lastname, ', ' ) as Employees
from 
  employees e 
  inner join organization o on o.org_id=e.org_id
group by o.org_id
登入後複製

Oracle

Oracle 提供用於群組連接的LISTAGG:

select 
  o.ID, o.Address, o.OtherDetails,
  STRING_AGG(e.firstname || ' ' || e.lastname, ', ' ) as Employees
from 
  employees e 
  inner join organization o on o.org_id=e.org_id
group by o.org_id
登入後複製

MS SQL Server

MS SQL Server
  1. MS SQL Server
與Post gre SQL Server 使用STRING_AGG進行群組連接:
select 
  o.ID, o.Address, o.OtherDetails,
  MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees
from 
  organization o
登入後複製

後備解決方案對於較舊的資料庫版本或不合規的資料庫,存在後備方法:建立一個儲存過程,將組織ID 作為輸入並輸出串聯的員工名稱。 在以下位置使用此預存程序查詢:透過實施這些特定於資料庫的解決方案或使用後備方法,您可以高效、準確地檢索所需的訊息。

以上是如何有效率地檢索SQL資料庫中的多筆相關記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板