0
votes

Comment puis-je obtenir un enregistrement qui a deux colonnes correspondantes qui sont multiples dans SQL?

Par exemple, j'ai deux tables:

Name     | Age
--------------------
test 1   | 18
test 1   | 18


12 commentaires

une jointure travaillera juste bien


J'ai édité ma question pour décrire mon problème plus précisément


Pourquoi voulez-vous imprimer la même ligne deux fois?


multiple de nom Qu'est-ce que cela signifie?


Dans mon programme, il y a d'autres colonnes différentes dans les deux rangées


Le nom apparaît multiplier dans une table (désolé je ne suis pas un locuteur natif)


Les deux tables ont-elles plus de colonnes que ce que vous avez montré ici?


Oui, cet exemple devrait être simple pour vous afin que vous ayez un meilleur aperçu


En fait, cela ne le fera pas simple. En fait, cela nous fera de fournir de mauvaises solutions. Vous devriez mentionner cela dans votre question afin d'obtenir un résultat correct.


Petite remarque. Si ces noms sont des personnes, alors plus souvent, on stockerait l'anniversaire des personnes. Puis calculez l'âge de cette date dans les requêtes. Beaucoup plus facile que d'avoir à corriger les valeurs d'âge dans les tables.


Je teste les réponses ci-dessous et si cela ne fonctionne pas, je vais mettre à jour ma question


L'âge est un exemple. Dans mon programme, j'utilise des datetes


3 Réponses :


0
votes

Utiliser Existe : xxx

avec un index sur (nom, âge, id) , cela devrait être l'approche la plus rapide.


1 commentaires

Le problème est ce que c'est si j'ai deux tables: je veux dire dans une table est id et nom et dans l'autre table est un AGE_ID, l'ID de l'autre table (clé étrangère) et l'âge



0
votes

Vous pouvez également utiliser un dans sur des truppeaux.

et un groupe par peut être combiné à avoir à obtenir uniquement ceux qui ont une duplication (nom, âge). xxx


0 commentaires

1
votes

Essayez la requête suivante:

Select t1.*, t2.* 
from table1 t1
join table2 t2
on  t1.id = t2.id
join (select id, age
      from table2
      group by id, age
      having count(*) > 1
     ) t3
on t1.id = t2.id and t2.id = t3.id and t2.age = t3.age


3 commentaires

J'ai mis à jour la requête en fonction de vos commentaires. S'il vous plaît essayez la requête mise à jour


Merci beaucoup ça marche


heureux de vous aider. N'hésitez pas à demander quoi que ce soit.