J'ai un ensemble de nombres et une table dans une base de données avec les colonnes id
(clé primaire) et text
(non nulle). Je voudrais créer une requête qui renvoie tous les nombres dans l'ensemble et le texte associé de la table. Malheureusement, tous les numéros existent dans id
colonne de la base de données, cela ne fonctionnera pas:Utilisation d'un ensemble de nombres dans une base de données sans créer de table temporaire
select id, text
from table
where id in (<set of numbers>)
Pour les ids non existants le mieux serait de retourner null
que le texte de la requête.
Existe-t-il un moyen de produire la sortie désirée sans d'abord créer une table temporaire à partir de l'ensemble à l'intérieur de la base de données?
Le moteur de base de données utilisé est un Microsoft SQL Server 2008 SP1 mais je serais intéressé par toute solution avec n'importe quel moteur de base de données.
Pourquoi vouloir éviter de créer une table temporaire? Cela semble être la meilleure solution évidente pour moi. – RationalGeek
@jkohlhepp; ce n'est pas forcément la meilleure solution, par exemple oracle peut générer des nombres séquentiels avec une requête récursive duale qui évolue mieux que la version matérialisée. n'ont pas de données pour les performances sur MS SQL. – Unreason
La raison exacte de cette requête a été fournie par Unreason - J'éviterais de créer fréquemment de très grandes tables. – Zizzencs