获取错误"#1248 - 每个派生表必须有自己的别名"通过phpMyAdmin运行以下查询时:
SELECT
`free_from`, `free_until`
FROM
(
SELECT
a.end AS `free_from`,
(SELECT MIN(c.start) FROM bookings c WHERE c.start>a.end) as `free_until`
FROM bookings a
WHERE NOT EXISTS (
SELECT 1
FROM bookings b
WHERE b.start BETWEEN a.end AND a.end + INTERVAL 30 Minute
)
AND a.end BETWEEN '2012-11-16 09:00:00' AND '2012-11-16 22:00:00'
)

在这方面你能帮助我吗?
答案 0 :(得分:1)
当前的问题是您的外部查询需要别名。但是,对于这种逻辑,您根本不需要子查询。并且,因为MySQL倾向于实现子查询,这可以提高性能:
SELECT a.end AS `free_from`,
(SELECT MIN(c.start)
FROM bookings c
WHERE c.start > a.end
) as `free_until`
FROM bookings a
WHERE NOT EXISTS (SELECT 1
FROM bookings b
WHERE b.start BETWEEN a.end AND a.end + INTERVAL 30 Minute
) AND
a.end BETWEEN '2012-11-16 09:00:00' AND '2012-11-16 22:00:00';