下面的sql脚本返回;
er\ U bad\ field\错误:“字段列表”中的未知列“tams\ u event\ u det\ f.lasteventdate”。
正在删除 LastEventDate
从最初 SELECT
语句修复了错误,但也意味着该字段将不会添加到输出表中。 LastEventDate
在内部 SELECT
查询 WHERE
合同条款 INNER JOIN
,从而使其超出主查询的范围。
我怎么能带你来 LastEventDate
进入主查询的范围以便在输出表中显示结果?
SELECT drivers.driver_key,
driver_name,
driver_sitename,
LastEventDate,
SUM(trips.trip_distance)
FROM drivers
INNER JOIN trips ON drivers.driver_key = trips.driver_key
WHERE trips.trip_date > (
SELECT MAX(event_date) AS LastEventDate
FROM events
WHERE events.driver_key = drivers.driver_key
)
GROUP BY DriverKey
ORDER BY DistanceSince DESC;
2条答案
按热度按时间ss2ws0br1#
可以将子查询转换为派生表并将其联接:
旁注:
我换了衣服
GROUP BY
子句,因此它包含所有非加积列(您的原始代码不是有效的标准sql,尽管mysql的某些版本默认允许这种语法)我添加了表别名,这使查询更易于读写
368yc8dk2#
内部子查询中的drivers表无法访问外部表引用,因此应该在子查询中使用适当的内部联接
但也可以对最大值使用适当的内部联接