Ho questa tabellasql più efficace per il recupero
----------------
| X | Y |
----------------
| a | 1 |
| c | 6 |
| e | 3 |
| d | 6 |
| c | 4 |
| b | 1 |
| a | 5 |
| g | 1 |
----------------
Quando mi sono dato una matrice [c, d] Ho bisogno di trovare "6" nella tabella sopra riportata. Cioè per ogni insieme di elementi ho bisogno di trovare il valore Y che è condiviso da tutti gli elementi nel set ma solo se non c'è nessun altro elemento (cioè un elemento che non è nell'array dato) che condivide quel valore. Il numero di elementi nella matrice non ha limiti teorici.
Altri esempi: per [a, b, c] non ho bisogno di trovare nulla. Anche per [a, b] non ho trovato nulla (perché g ha anche una voce per Y = 1, quindi per [a, b, g] ho bisogno di trovare "1").
Ovviamente potrei scorrere l'array, interrogare per query, ma sembra un modo così inefficiente di farlo. Qual è il modo migliore per farlo in SQL? Grazie.
[Cosa hai provato?] (Http://whathaveyoutried.com) Stai cercando di passare il tuo "array" nella query utilizzando un elenco IN? –
Cosa RMDB stai usando? –
Il meglio è soggettivo. Dipende dai dati che hai, dal database e dalla versione che usi e da quali indici sono disponibili. –