C'è un modo per utilizzare l'intersezione senza selezionare solo valori distinti? Qualcosa come INTERSECT ALL
.Intersect in SQL Server
Ad esempio, considerare tabella A e B
A --> 1, 1, 1, 2, 3, 4
B --> 1, 1, 2
comporterebbe
Result --> 1, 1, 2
EDIT
Penso che questo link spiega bene quello che voglio. Questo other link è anche interessante per comprendere la domanda. O this other link spiega meglio l'evento.
EDIT 2
Supponiamo tabelle:
Tabella A
╔════════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠════════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ House ║ 10 ║ 1 ║ NO ║ -5 ║
║ Monkey ║ 15 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚════════╩════╩═══╩════╩════╝
Tabella B
╔═════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠═════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 15 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚═════╩════╩═══╩════╩════╝
La risposta per Intersect (select * from A INTERSECT select * from B
) sarebbe:
╔═════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠═════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚═════╩════╩═══╩════╩════╝
Perché richiede solo valori distinti. Quello che voglio sta prendendo file comuni, come:
╔═════╦════╦═══╦════╦════╗
║ A ║ B ║ C ║ D ║ E ║
╠═════╬════╬═══╬════╬════╣
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Car ║ 10 ║ 1 ║ OK ║ -1 ║
║ Dog ║ 3 ║ 1 ║ OK ║ -1 ║
╚═════╩════╩═══╩════╩════╝
Osservare Non ho bisogno di sapere quello che ho da collegare (la connessione è posizionale, proprio come INTERSECT
). L'ID sarebbe qualcosa costruito usando tutte le colonne (il collegamento tra le tabelle sono tutte colonne, in base alla loro posizione).
HUH? Perché il risultato ha due valori per 1? Questo non è ciò che INTERSECT significa affatto. È progettato per restituire valori distinti che sono presenti in entrambi. Avresti bisogno di qualcosa di diverso da intersecare affinché funzioni. –
È un esempio. La connessione delle tabelle sarebbe posizionale. Proprio come l'intersezione. – Nizam
@SeanLange - SQL ansi ha un 'INTERSECT ALL' e un' EXCEPT ALL'. –