I tej tabelinajbardziej wydajny SQL dla pobierania
----------------
| X | Y |
----------------
| a | 1 |
| c | 6 |
| e | 3 |
| d | 6 |
| c | 4 |
| b | 1 |
| a | 5 |
| g | 1 |
----------------
Gdy ja podano szereg [c, d] Należy znaleźć „6” w tabeli powyżej. To znaczy. dla każdego zestawu elementów muszę znaleźć wartość Y, która jest wspólna dla wszystkich elementów w zestawie, ale tylko wtedy, gdy nie ma innego elementu (tj. elementu, który nie znajduje się w danej tablicy), który współużytkuje tę wartość. Liczba elementów w tablicy nie ma teoretycznych limitów.
Więcej przykładów: dla [a, b, c] Nie muszę niczego szukać. Dla [a, b] również nie znajduję niczego (ponieważ g ma również wpis dla Y = 1, więc dla [a, b, g] muszę znaleźć "1").
Mogę oczywiście iterować po tablicy, zapytać przez zapytanie, ale wydaje się to nieefektywnym sposobem zrobienia tego. Jaki jest najlepszy sposób robienia tego w SQL? Dziękuję Ci.
[Co próbowałeś?] (Http://whathaveyoutried.com) Czy starasz się przekazać swoją „tablicę” do zapytania przy użyciu listy NA? –
Jakiego RMDB używasz? –
Najlepsze jest subiektywne. Zależy to od posiadanych danych, używanej bazy danych i wersji oraz dostępnych indeksów. –