gpt4 book ai didi

MySQL(多个)带子查询的左连接 - 未知列

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

我编写了一个查询,该查询应该从几个表中选择数据。但是,当我使用子查询添加最后一个 LEFT JOIN 时,查询失败。这是因为以下错误:

“where 子句”中未知列“table1.id”

因此它无法访问主查询中的列,但如何使其能够访问它们?

这是查询(尽管由于它是敏感信息而被混淆):

SELECT `table1`.*, `table2`.`max_people`, COUNT(`table3`.`id`) as c_p, dates.date 
FROM `table1`
LEFT JOIN `table2`
ON `table1`.`c_id`=`table2`.`id`
LEFT JOIN `table3`
ON `table1`.`id`=`table3`.`series_id`
LEFT JOIN (SELECT `table4`.`series_id`,MIN(`table4`.`date`) as date, `table4`.`start_time` FROM `table4` WHERE `table4`.`series_id`=`table1`.`id`) dates
ON `table1`.`id`=dates.series_id
GROUP BY `table1`.`id`
ORDER BY `table1`.`c_id`, `table1`.`name`

那么如何让子查询的WHERE子句访问主查询的信息呢?

最佳答案

您希望在子查询中进行聚合,而不是相关子句:

FROM `table1` t1 LEFT JOIN
`table2` t2
ON t1.`c_id` = t2.`id` LEFT JOIN
`table3` t3
ON t1.`id` = t3.`series_id` LEFT JOIN
(SELECT t4.`series_id`, MIN(t4.`date`) as date,
MIN(t4.`start_time`) as start_time -- this is a guess
FROM `table4` t4
GROUP BY t4.`series_id`
) dates
ON t1.`id` = dates.series_id

您的代码表现出一个坏习惯,即在 SELECT 中包含 GROUP BY 中没有的列。在外部查询中也是如此。在子查询中,我不确定您是否想要为每个 series_id 或每个 series_id/start_time 组合提供单独的行。我猜测格式,这就是为什么有 MIN()

关于MySQL(多个)带子查询的左连接 - 未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41045462/

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