233 votes

SQL OÙ... DANS la clause plusieurs colonnes

J’ai besoin de mettre en œuvre la requête suivante dans SQL Server

mais l’où... DANS l’alinéa autorise seulement 1 colonne. Comment comparer 2 ou plusieurs colonnes avec une autre sélection interne ?

156voto

mrdenny Points 3359

Vous aurez envie d’utiliser la syntaxe lorsqu’il existe à la place.

138voto

sleske Points 29978

Vous pouvez créer une table dérivée de la sous-requête et rejoignez table1 à cette table dérivée :

Cela ne fonctionne que si table2 ne contient pas de paires en double de `` (par exemple, si c’est le PK). Dans le cas contraire, vous devrez utiliser DISTINCT.

17voto

gbn Points 197263

Une simple clause EXISTS est plus propre

Si vous avez plusieurs lignes dans la corrélation une jointure donne plusieurs lignes dans la sortie, donc vous auriez besoin distinct. Qui rend habituellement EXISTS plus efficace.

Notez « SELECT » * avec une jointure comprendrait également des colonnes de la ligne de limitation des tables

2voto

BradC Points 18833

Pourquoi utiliser lorsqu’il existe ou TABLES dérivées quand vous pouvez juste faire une jointure interne normale :

Si la paire de (CM_PLAN_ID, Individual_ID) n’est pas unique dans la table d’État, vous devrez peut-être plutôt un t.* SELECT DISTINCT.

-2voto

Somnath Kadam Points 487

Si vous voulez pour une table, puis utilisez les suivants de la requête

et les données de la table comme suit

Puis sortie comme suit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X