Sous-requêtes retournant un résultat scalaire

Les Sous-requêtes utilisées dans les prédicats de recherche, à l'exception des prédicats d'existence et de quantité, doivent retourner un résultat scalaire, c'est-à-dire pas plus d'une colonne d'une seule ligne sélectionnée ou une valeur agrégée, sinon une erreur d'exécution ("Multiple rows in a singleton select..") se produira.

Note

Bien que Firebird signale une erreur réelle, le message peut être légèrement trompeur. "singleton SELECT" est une requête qui ne doit pas retourner plus d'une chaîne. Cependant, singleton et scalar ne sont pas synonymes : tous les SELECTS à un seul élément ne doivent pas être scalaires ; et un échantillonnage à une seule colonne peut retourner plusieurs lignes pour les prédicats d'existence et de quantité.

Example 1. Sous-requête comme colonne de sortie dans la liste de sélection
SELECT
    e.first_name,
    e.last_name,
    (SELECT
         sh.new_salary
     FROM
         salary_history sh
     WHERE
         sh.emp_no = e.emp_no
     ORDER BY sh.change_date DESC ROWS 1) AS last_salary
FROM
    employee e
Example 2. Sous-requête dans une instruction WHERE pour obtenir la valeur du salaire maximum de l'employé et filtrer par celle-ci.
SELECT
    e.first_name,
    e.last_name,
    e.salary
FROM
    employee e
WHERE
    e.salary = (SELECT
                    MAX(ie.salary)
                FROM
                    employee ie)