Как говорит Майк, когда есть только одна запись (как в вашем примере кода), нет никакой разницы.
При наличии нескольких записей FOR EACH обрабатывает весь набор, как определено предложением WHERE (еслионо присутствует) и отсортировано по предложению BY (если оно присутствует).
FOR FIRST также может иметь WHERE и BY.Однако - FOR FIRST работает только с ОДНОЙ записью.Это может быть очень запутанным, если вы указываете сортировку, которая отличается от индекса, к которому приводит предложение WHERE (или его отсутствие по умолчанию).ПЕРВАЯ (и единственная) запись, возвращаемая запросом, будет «отсортирована».Другими словами, BY не влияет на выбор.
Следующий пример sports2000 проясняет это:
for each customer no-lock where custNum > 10 by name:
display custNum name.
end.
pause.
for first customer no-lock where custNum > 10 by name:
display custNum name.
end.
Использование FOR FIRST почти всегда является ошибкой и ошибкой, ожидающей возникновения.Вдвойне, если указано предложение BY.