Mam bardzo prosty problem, którego nie mogę rozwiązać. Muszę zrobić coś takiego:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
Czy ktoś może pomóc?
Edytować
Dane pochodzą w postaci pliku tekstowego od jednego z naszych klientów. Jest całkowicie niesformatowany (jest to pojedyncza, bardzo długa linia tekstu), ale może to być możliwe w programie Excel. Ale to nie jest dla mnie praktyczne, ponieważ będę musiał użyć tych wartości w moim zapytaniu sql. Nie jest to wygodne za każdym razem, gdy muszę uruchomić zapytanie.
sql-server
select-query
Eedoh
źródło
źródło
$d = (1, 1, 1, 2, 5, 1, 6) | sort -Unique
aby uzyskać różne wartości w tablicy$d
. Łatwy do rozszerzenia na narzędzie do pliku.Odpowiedzi:
Najprostszym sposobem na uzyskanie odrębnych wartości długiej listy tekstu rozdzielanego przecinkami byłoby użycie funkcji find zamień na UNION, aby uzyskać różne wartości.
Stosowany do długiej linii tekstu rozdzielanego przecinkami
UNION SELECT
SELECT
przed wyciągiemPowinieneś teraz mieć działające zapytanie
źródło
Dostępny tylko w SQL Server 2008 i nowszych wersjach jest konstruktorem wierszy w następującej formie:
Możesz użyć
Wielu pisało o nich, wśród nich:
źródło
X
to alias nazwy tabeli ia
alias nazwy kolumny;).pgsql
i teraz walę głową, aby FROM zaakceptował drobne wartości jako rekordy wierszasqlserver
, i oto jest. Chętnie to wiem.Ogólnie :
W Twoim przypadku :
źródło
Czy próbowałeś użyć następującej składni?
źródło
SELECT DISTINCT table_name.column_name FROM (VALUES (1), (2), (3)) AS table_name(column_name)
Jeśli chcesz wybrać tylko niektóre wartości z jednej tabeli, możesz spróbować
na przykład:
jeśli chcesz wybrać z wielu tabel, musisz przejść
UNION
.Jeśli chcesz tylko wybrać wartości 1, 1, 1, 2, 5, 1, 6, musisz to zrobić
źródło
PostgreSQL oferuje 2 sposoby:
lub
używając metody tablicowej możesz również zrobić coś takiego:
źródło
:)
Działa to na SQL Server 2005 i jeśli jest maksymalna liczba:
źródło
Wiem, że to dość stary wątek, ale szukałem czegoś podobnego i wymyśliłem to.
Biorąc pod uwagę, że masz ciąg oddzielony przecinkami, możesz użyć
string_split
To powinno wrócić
Podział łańcucha wymaga dwóch parametrów: wejściowego ciągu i znaku separatora.
możesz dodać opcjonalną instrukcję where, używając
value
jako nazwy kolumnyprodukuje
źródło
Jeśli potrzebujesz tablicy, oddziel kolumny tablicy przecinkiem:
źródło
Innym sposobem na użycie jest zapytanie takie jak to:
źródło
źródło
Techniką, która zadziałała dla mnie, jest zapytanie do tabeli, o której wiesz, że zawiera dużą liczbę rekordów, w tym tylko pole Row_Number w wyniku
zwróci zestaw wyników 10000 rekordów od 1 do 10000, użyj tego w innym zapytaniu, aby uzyskać pożądane wyniki
źródło
Użyj SQL
In
funkcjiCoś takiego:
Działa przysmak w ArcGIS
źródło