0
votes

Comment sélectionner le premier identifiant unique pour les chiffres

Je veux rechercher dans dB premier identifiant unique pour les numéros de recherche de messagerie instantanée. Disons que je recherche des numéros: 721, 969, 337. Tous ces numéros ont au moins 3 entrées dans dB comme: xxx

donc je veux obtenir une carte d'identité (pourrait être le plus bas mais je ne peux pas 't-tête) pour chaque numéro 721 (1), 969 (4), 337 (8). Des idées, je pourrais utiliser des requêtes distinctes pour cela, mais j'espère qu'il y a une solution en utilisant un?


1 commentaires

Si vous n'échouez pas quelle carte d'identité vous obtenez pourquoi avez-vous été balisé la question avec plus grand-n-per-groupe ? Aussi quoi dans les cas si vous recherchez un numéro qui n'existe pas dans la table si cela importe?


3 Réponses :


2
votes

Si vous voulez juste que vous voulez juste l'identifiant minimum par numéro: xxx pré>

si vous voulez l'enregistrement entier: p> xxx pré>

ou, si vous Exécutez MySQL 8.0: P>

SELECT id, number, name
FROM (
    SELECT t.* ROW_NUMBER() OVER(PARTITON BY number ORDER by id) rn FROM mytable t
) x
WHERE rn = 1


3 commentaires

Comment Query 1 fonctionnerait-il comme une requête SQL invalide dans les cas généraux .. Je suppose que cela devrait être groupe par numéro également un coutures à manquer de faire défaut le Numéros de recherche.


@RAYMONDNIJIJLAND: J'ai réparé la faute de frappe dans la première requête, merci de l'avoir repéré!


Pas de problème mais toujours un où numéro de numéro dans (721, 969, 337) serait nécessaire pour les requêtes si le Topicstarter a besoin de ces numéros Nombre que je suppose que les données réelles contenant non seulement ces 721, 969, 33 numéros



0
votes

Vous pouvez essayer ci-dessous - en utilisant la sous-requête corrélée xxx


0 commentaires

1
votes

Donc, je veux obtenir une carte d'identité (pourrait être le plus bas mais ça ne me dérange pas) pour chaque Numéro 721 (1), 969 (4), 337 (8). Des idées, je pourrais utiliser des requêtes distinctes Pour cela, mais j'espère qu'il y a une solution en utilisant un? p>

Soi (à gauche) Rejoignez sur la même table avec un filtre peut être l'approche la plus logique pratiquée, vous devez avoir toutes les colonnes ..
Plus ou moins comme les requêtes ci-dessous. p>

Query (MIN ID) FORT> P>

**min**

| number | id  |
| ------ | --- |
| 337    | 8   |
| 721    | 1   |
| 969    | 4   |

**max**

| number | id  |
| ------ | --- |
| 337    | 10  |
| 721    | 3   |
| 969    | 7   |


0 commentaires