gpt4 book ai didi

mysql - SQL 查询 - 不在一组已使用的项目中

转载 作者:行者123 更新时间:2023-11-29 02:02:59 28 4
gpt4 key购买 nike

我正在尝试选择当前未分配给用户的作业。

Users table: id | name
Jobs: id | name
Assigned: id | user_id | job_id | date_assigned

我想选择所有当前未完成的作业。示例:

用户:

id   |   name
--------------
1 | Chris
2 | Steve

工作

id   |  name
---------------
1 | Sweep
2 | Skids
3 | Mop

已分配

id   |   user_id  |   job_id    |   date_assigned 
-------------------------------------------------
1 | 1 | 1 | 2012-01-01
2 | 1 | 2 | 2012-01-02
3 | 2 | 3 | 2012-01-05

不能给两个人分配同一份工作。所以查询会返回

[1, Sweep]

自从 Chris 一天后搬到 Skids 之后就没有人在处理它了。

到目前为止:

SELECT
*
FROM
jobs
WHERE
id
NOT IN
(
SELECT
DISTINCT(job_id)
FROM
assigned
ORDER BY
date_assigned
DESC
)

但是,此查询在同一数据集上返回 NULL。没有解决扫描作业现在打开的问题,因为它当前没有被处理。

最佳答案

SELECT a.*
FROM jobs a
LEFT JOIN
(
SELECT a.job_id
FROM assigned a
INNER JOIN
(
SELECT MAX(id) AS maxid
FROM assigned
GROUP BY user_id
) b ON a.id = b.maxid
) b ON a.id = b.job_id
WHERE b.job_id IS NULL

这会获取每个用户的最新作业。一旦我们有了这些工作的列表,我们就会选择所有不在该列表中的工作。

关于mysql - SQL 查询 - 不在一组已使用的项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637337/

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