簡體   English   中英

SQL-左外部聯接具有2個表和派生表

[英]SQL - Left outer join with 2 tables and derived tables

我的情況如下:

Table Persons  
- id (primary key)  
- name  

Table Logs  
- id (primary key)  
- person_id (foreign key)  
- datetime  
- status  

現在,我想創建一個SQL查詢以進行檢索:

  • 與表無關的人員的所有名稱日志
  • 並與與字段ID和person_id鏈接的表Logs有關系。
  • 只能從表Logs中按人查看最新記錄(即最新的日志ID)

此查詢僅檢索具有匹配關系的名稱:

SELECT p.id, p.name, DATE_FORMAT(l.datetime,'%d-%m-%Y %H:%i:%s') AS datetime, l.status 
        FROM Persons p LEFT OUTER JOIN Logs l 
        ON p.id = l.person_id
        WHERE l.id IN (SELECT id from Logs T1 
            INNER JOIN (SELECT MAX(id) AS Max_id FROM Logs 
            GROUP BY person_id
            ) T2
            ON T1.id = T2.Max_id)
        ORDER BY l.status, p.name";

如何獲取與表Logs無關的名稱?

您可以使用LEFT JOIN:

SELECT p.name 
FROM Persons p 
LEFT JOIN Logs l ON p.id = l.person_id
WHERE l.id IS NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM