Таблиця результатів запиту на вибірку генерується таким чином:
Якщо запит – це запит на об’єднання (UNION) інструкцій SELECT, то для кожної із цих інструкцій виконати дії 2-7 і отримати окрему таблицю результатів.
Сформувати декартовий добуток таблиць, вказаних в секції FROM. Якщо в секції FROM вказана лише одна таблиця, то декартовий добуток буде вона сама.
Якщо є секція WHERE, то записувати задану в ній умову відбору до кожного рядка таблиці декартового добутку і залишити в ній тільки ті рядки, для яких ця умова виконується, тобто має значення TRUE; рядки, для яких умова відбору має значення FALSE або NULL – відкинути. Якщо в секції WHERE міститься підлеглий запит, то він виконується для кожного рядка, що перевіряється. (підлеглі запити – див далі).
4. Якщо є секція GROUP BY, - то розділити рядки, що залишилися в таблиці декартового добутку, на групи таким чином, щоб в кожній групі рядки мали однакові значення в усіх стовпчиках групування.
5. Якщо є секція HAVING,- то застосувати задану в ній умову відбору до кожної групи рядків і залишити в таблиці декартового добутку тільки ті групи, для яких ця умова виконується тобто має значення TRUE; групи, для яких умова відбору має значення FALSE або NULL – відкинути. Якщо є секція HAVING міститься підлеглий запит, то він виконується для кожної групи, що перевіряється.
6. Для кожного із рядків (або для кожної групи рядків), що залишилися – обчислити значення кожного елемента із списку результуючих стовпчиків секції SELECT і створити один рядок таблиці результатів запиту. При будь-якому звертанні до стовпчика береться значення стовпчика для біжучого рядка (або групи рядків). В якості аргумента статистичної функції використовуються значення стовпчика із всіх рядків, які входять у групу,- якщо є секція GROUP BY, в іншому випадку (якщо секції GROUP BY – немає) – використовуються значення стовпчика із всіх рядків таблиці результатів.
7. Якщо вказаний предикат DISTINCT, - то вилучити із таблиці результатів запиту всі рядки–дублікати.
8. Якщо запит – це запит на об’єднання (UNION) інструкцій SELECT, то об’єднати результати виконання окремих інструкцій в одну таблицю результатів запиту. Вилучити із неї рядки–дублікати, якщо не вказаний предикат ALL.
Якщо є секція ORDER BY, - то відсортувати результати запитy.