gpt4 book ai didi

mysql - 如何为每个 GROUP BY 集返回多个结果?

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

我的数据库中有 3 个表:

  1. 员工日志

  2. 工作日志

  3. 船员日志

创建新工作时,会为其分配一名员工,因此会在“crew_log”表中创建一个条目。

我想做的是获取每个具有 type=2 属性的员工(意味着他们是主管)(来自 employee_log),然后将 crew_log 加入到查询中。

每个员工在“crew_log”中可以有多个事件作业,因此目标是在一个数组中返回该员工的所有事件作业。

到目前为止,我的查询如下所示:

SELECT el.id, cl.job_id
FROM employee_log AS el
JOIN crew_log AS cl
ON el.id=cl.employee_id
AND cl.start_date >= CURDATE()
WHERE el.type=2
GROUP BY cl.employee_id

这当然是不正确的,但也许它会帮助形象化我的问题。

我当然可以用另一种方式来做到这一点......但我正在尝试做所有事情都是一个 SQL 查询,以提高性能并学习有关 SQL 的新知识。

我的替代方案是使用两个 while 循环。第一个循环将获取每个 type=2 的员工,然后在该循​​环中我将执行另一个 SQL 查询以获取该员工的所有事件工作。

必须有更好的方法吗?

最佳答案

您的查询看起来是正确的,除了您不需要 GROUP BY 因为您没有任何聚合函数 (SUM(), COUNT(), AVG ()) 将其替换为 ORDER BY 以按员工 ID 排序。

SELECT el.id, cl.job_id
FROM
employee_log AS el
LEFT JOIN crew_log AS cl
ON el.id=cl.employee_id
WHERE
el.type=2
AND cl.start_date >= CURDATE()
ORDER BY el.id

我还用 LEFT JOIN 替换了您的 JOIN,这样在 crew_log 中没有记录的员工就不会被排除在查询之外。

关于mysql - 如何为每个 GROUP BY 集返回多个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133778/

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