如何檢索與單一記錄相關的多筆記錄
在資料庫管理中,經常需要從多個表中獲取數據,這些表是透過關係聯繫起來。本文示範了一種檢索有關特定組織及其員工名字的所有資訊的有效方法。
取得多個相關記錄的概念需要使用群組串聯,這在 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 Serverselect o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees from organization o
以上是如何有效率地檢索SQL資料庫中的多筆相關記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!