gpt4 book ai didi

MySQL PDO 子查询构造帮助 - 以前从未这样做过

转载 作者:行者123 更新时间:2023-11-30 22:08:28 26 4
gpt4 key购买 nike

我正在尝试在 MySQL 中运行一个子查询,但我似乎无法让它工作。浏览了许多试图找到解决方案的帖子。这一切都让我有点头疼。我希望这对你们来说很简单。

SELECT * FROM jobs x 
LEFT JOIN status b on x.id = b.job_id
LEFT JOIN delivery d on x.id = d.job_id
LEFT JOIN logos h on x.id = h.job_id
LEFT JOIN customers c on x.customer_id = c.customer_id
LEFT JOIN (SELECT *
FROM communicator t
WHERE x.id = t.job_id
GROUP BY t.id
DESC
LIMIT 1)
WHERE x.status=1

所以问题出在我开始子查询的最后一个LEFT JOIN。我无法让它工作。我究竟做错了什么?我只想要最后一条记录添加的通信器表中的一个结果,因此 DESC 的顺序限制为 1。

最佳答案

您混淆了两种常用的子查询类型。在对子查询进行连接时,您需要为子查询提供一个别名。此外,在对子查询进行连接时,您不会在该子查询中引用另一个表中的字段 - 而是在 ON 子句中引用这样的表。

我希望这样的事情:-

SELECT * 
FROM jobs x
LEFT JOIN status b on x.id = b.job_id
LEFT JOIN delivery d on x.id = d.job_id
LEFT JOIN logos h on x.id = h.job_id
LEFT JOIN customers c on x.customer_id = c.customer_id
LEFT JOIN
(
SELECT *
FROM communicator t
GROUP BY t.id
) sub0
ON x.id = sub0.job_id
WHERE x.status=1

然而,另一个问题是您的子查询正在执行 GROUP BY t.id,但您返回的是 job_id 和其他字段。返回哪个特定的 job_id 是针对未定义的 id。我不知道您的多个字段如何关联以及您需要哪些字段,但我怀疑一开始您想要的是这样的,以获取 job_id 的最新 id 字段

SELECT * 
FROM jobs x
LEFT JOIN status b on x.id = b.job_id
LEFT JOIN delivery d on x.id = d.job_id
LEFT JOIN logos h on x.id = h.job_id
LEFT JOIN customers c on x.customer_id = c.customer_id
LEFT JOIN
(
SELECT job_id, MAX(id) AS id
FROM communicator
GROUP BY job_id
) sub0
ON x.id = sub0.job_id
WHERE x.status=1

关于MySQL PDO 子查询构造帮助 - 以前从未这样做过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907555/

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