SELECT DISTINCT c.customer_id, c.first_name, c.last_name
FROM customers c
INNER JOIN bookings b1 ON c.customer_id = b1.customer_id
INNER JOIN bookings b2 ON c.customer_id = b2.customer_id
WHERE YEAR(b1.booking_date) != 2021 AND YEAR(b2.booking_date) != 2021
AND YEAR(b1.booking_date) != YEAR(b2.booking_date)
ORDER BY c.customer_id;
该查询使用INNER JOIN将customers和bookings表连接,使用多个别名的bookings表来检索客户在多年中预订,但不包括2021年的预订。然后使用WHERE子句过滤掉只在2021年预订的客户,并根据客户ID排序结果。DISTINCT关键字用于删除重复行。