【发布时间】:2018-11-16 18:04:58
【问题描述】:
我正在处理这个question 我知道简单的汇总答案,但我想尝试用子查询挑战自己。
SELECT outercm.surname, outercm.firstname, outercm.memid, subq.starttime
FROM cd.members outercm,
(
SELECT cm.memid, cb.starttime
from cd.members cm
JOIN cd.bookings cb ON cb.memid = cm.memid
WHERE cm.memid = outercm.memid
AND
DATE(starttime ) >= '01-09-2012'
ORDER BY cb.starttime
LIMIT 1
) as subq
我得到这个错误:
表“outercm”有一个条目,但无法引用 来自查询的这一部分。
我也尝试过来自 FROM 的子查询:
SELECT outercm.surname, outercm.firstname, outercm.memid,
(
SELECT cb.starttime
from cd.members cm
JOIN cd.bookings cb ON cb.memid = cm.memid
WHERE cm.memid = outercm.memid
AND
DATE(starttime ) >= '01-09-2012'
ORDER BY cb.starttime
LIMIT 1
)
FROM cd.members outercm
我收到这条消息:
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1
我不确定何时以及如何在内部查询和外部查询之间进行引用。 感谢您的帮助
【问题讨论】:
-
您的第一个查询是完整的查询吗?如果没有声明别名
outercm的位置,您能否分享完整的 SQL?我怀疑您的String index out of range是由于您的随机日期格式。而是使用'2012-01-09'::date作为您的日期文字。第二个查询可能会运行,因为它看起来对我来说没问题。 -
@JNevill 对不起,没有注意到这部分已经消失了。已编辑。
-
请检查我的答案,如果它对你有用,请接受/投票,这样它也可以帮助其他人寻求答案。请阅读:stackoverflow.com/help/someone-answers
标签: sql postgresql