gpt4 book ai didi

mysql - SQL - 具有 2 个表和派生表的左外连接

转载 作者:行者123 更新时间:2023-11-29 22:11:12 25 4
gpt4 key购买 nike

我的场景如下:

Table Persons  
- id (primary key)
- name

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

现在我想创建一个 SQL 查询来检索:

  • Persons 中与 Logs 表没有关系的所有名称
  • 并与通过字段 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 表没有关系的名称?

最佳答案

您可以使用左连接:

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

关于mysql - SQL - 具有 2 个表和派生表的左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com