现在是星期五下午*,我的大脑已经停止工作。通常是我在回答这样愚蠢的 SQL 问题,对不起!
我试图通过将后者连接到前者来获得一个表以及另一个表的列的最高值。
SELECT
jobs.*,
MAX(notes.`timestamp`) AS complete_date
FROM jobs
LEFT JOIN notes ON (jobs.id=notes.job_id)
WHERE (jobs.status="complete" OR jobs.status="closed")
AND (notes.type="complete" OR notes.type IS NULL)
GROUP BY jobs.id
ORDER BY complete_date ASC
我正在尝试获取所有符合WHERE jobs.
……标准的工作,如果有的话,type=complete
与该工作相关的最新注释的时间戳:
Job ID Complete Date
1 today
2 NULL
4 yesterday
作业 3 未出现,因为它不符合jobs.status
条件。但我实际得到的是:
Job ID Complete Date
1 today
4 yesterday
缺少作业 2,即 JOIN 的行为类似于 INNER JOIN。
我确信只是我有一个脑死亡的时刻,但我不明白为什么我的 LEFT(OUTER)JOIN 没有给我所有的工作,无论票据的价值如何。
具体来说,用户可以删除注释,因此可能完整/关闭的作业可能没有type=complete
注释(状态更改时输入注释),我试图捕捉用户关闭作业时的情况,添加注释,然后删除注释。
* 东方某处