J'ai un problème très simple que je ne peux pas résoudre. Je dois faire quelque chose comme ça:
select distinct * from (1, 1, 1, 2, 5, 1, 6).
Tout le monde peut aider ??
Éditer
Les données proviennent d'un fichier texte de l'un de nos clients. Il est totalement non formaté (c'est une seule et très longue ligne de texte), mais il peut être possible de le faire dans Excel. Mais ce n'est pas pratique pour moi, car je devrai utiliser ces valeurs dans ma requête SQL. Ce n'est pas pratique de le faire chaque fois que j'ai besoin d'exécuter une requête.
sql-server
select-query
Eedoh
la source
la source
$d = (1, 1, 1, 2, 5, 1, 6) | sort -Unique
pour obtenir les valeurs distinctes dans un tableau$d
. Facile à étendre à un outil de fichier à fichier.Réponses:
Le moyen le plus simple d'obtenir les valeurs distinctes d'une longue liste de texte délimité par des virgules serait d'utiliser une recherche de remplacement par UNION pour obtenir les valeurs distinctes.
Appliqué à votre longue ligne de texte délimité par des virgules
UNION SELECT
SELECT
devant la déclarationVous devriez maintenant avoir une requête de travail
la source
Disponible uniquement sur SQL Server 2008 et plus est constructeur de lignes sous cette forme:
vous pouvez utiliser
Beaucoup ont écrit, parmi eux:
la source
X
est un alias pour le nom de la table et una
alias pour le nom de la colonne;).pgsql
et maintenant je frappe la tête pour que FROM accepte les valeurs mineures en tant qu'enregistrements de ligne danssqlserver
, et le voici. Content de le savoir.En général :
Dans ton cas :
la source
Avez-vous essayé d'utiliser la syntaxe suivante?
la source
SELECT DISTINCT table_name.column_name FROM (VALUES (1), (2), (3)) AS table_name(column_name)
Si vous ne souhaitez sélectionner que certaines valeurs dans une seule table, vous pouvez essayer ceci
par exemple:
si vous souhaitez sélectionner parmi plusieurs tables, vous devez opter pour
UNION
.Si vous souhaitez simplement sélectionner les valeurs 1, 1, 1, 2, 5, 1, 6, vous devez le faire
la source
PostgreSQL vous propose 2 façons de procéder:
ou
en utilisant l'approche tableau, vous pouvez également faire quelque chose comme ceci:
la source
:)
Cela fonctionne sur SQL Server 2005 et s'il y a un nombre maximal:
la source
Je sais que c'est un fil assez ancien, mais je cherchais quelque chose de similaire et j'ai trouvé ça.
Étant donné que vous disposiez d'une chaîne séparée par des virgules, vous pouvez utiliser
string_split
Cela devrait revenir
Le fractionnement de chaîne prend deux paramètres, l'entrée de chaîne et le caractère séparateur.
vous pouvez ajouter une instruction where facultative en utilisant
value
comme nom de colonneproduit
la source
Si vous avez besoin d'un tableau, séparez les colonnes du tableau par une virgule:
la source
Vous pouvez également utiliser une requête comme celle-ci:
la source
la source
Une technique qui a fonctionné pour moi consiste à interroger une table dont vous savez qu'elle contient une grande quantité d'enregistrements, y compris uniquement le champ Row_Number dans votre résultat
renverra un jeu de résultats de 10000 enregistrements de 1 à 10000, utilisez-le dans une autre requête pour vous donner les résultats souhaités
la source
Utilisez la
In
fonction SQLQuelque chose comme ça:
Fonctionne un régal dans ArcGIS
la source