Je fais un choix avec union. Sélectionnez * à partir de table_1 Union Select * à partir de table_2 ... p>
est-il possible de filtrer le résultat de la requête par des valeurs de colonne? p>
3 Réponses :
Oui, vous pouvez joindre l'ensemble de l'union à l'intérieur d'un autre SELECT:
select * from ( select * from table_1 union select * from table_2) as t where t.column = 'y'
Si j'introduit cet alias, la table temporaire est-elle créée dans TEMBDB dans les tables système?
@GRUBER - L'alias est juste nécessaire car chaque table (ou source de lignes qui ressemble à une table) dans la clause de la clause doit avoir un nom. Si les ensembles de résultats finissent par entrer dans TEMPDB sont entièrement à la hauteur de l'optimiseur, en fonction de la taille de l'ensemble de résultats et du type d'opérations effectuées (par exemple, si vous triez un ensemble de résultats importants, il risque de finir dans TEMPDB)
Si vous souhaitez filtrer la requête en fonction de certains critères, vous pouvez le faire -
Select * from table_1 inner join table_2 on table_1.col1 = table_2.col1
Une solution simple à lire consiste à utiliser un CTE (expression de table commune). Cela prend la forme:
WITH foo AS ( SELECT thing FROM place WHERE field = 'Value' ), bar AS ( SELECT otherthing FROM otherplace WHERE otherfield = 'Other Value' )
La pointe est probablement dans cette section ... - Syntaxe pour SQL Server [avec
C'est ce bit: [ ... n]
Vous pouvez également définir une vue avec votre syndicat, puis utiliser cette vue dans une nouvelle instruction SELECT. À la fin, c'est la même chose comme la solution de Damien_the_unbeliever ...