Запросы IN и EXISTS обычно работают медленнее JOIN. Вариант
Serg79 выглядит предпочтительней.
SELECT DISTINCT CB1.Authors
FROM CatalogBooks CB1 LEFT JOIN
(SELECT Authors FROM CatalogBooks WHERE YearPub IN (2000, 2002, 2003)) CB2 ON CB1.Author = CB2.Author
WHERE CB2.Author IS NULL
позвольте не согласится
действительно что IN работает медленнее, но EXISTS дает хорошую скорость, единственное скорость выполнение зависти в большей степени от структуры таблицы и индексов на ней
вот еще пять копеек (возможно он не пройдет на ПАРАДОКС)
SELECT .Authors
FROM CatalogBooks
GROUP BY Authors
HAVING SUM(CASE WHEN YearPub IN (2000, 2002, 2003) THEN 1 ELSE 0 END) = 0
А что такое "SELECT 1" о_О
просто выбрать 1, сделано из-за того что SELECT всегда должен иметь хоть одно поле, а в том подзапросе нужно просто сказать, есть что-то или нет
ЗЫЖ надеюсь не сильно запутал