J'ai 2 tables (Orders, OrderItems) liées en fonction d'une colonne OrderID. Je dois trouver toutes les commandes qui n'ont pas d'articles de commande.Rechercher les enregistrements qui n'ont pas d'enregistrements associés dans SQL
Répondre
Voici joint les tables, puis sélectionne les sans éléments de commande. La jointure est considérée comme plus efficace que l'utilisation de `IN '.
select *
from
Orders O
left outer join OrderItems I
on I.OrderId = O.Id
where
I.Id is null
C'est ce que j'ai fini par faire, merci – Slee
Aaron - Je peux imaginer comment une jointure externe gauche serait plus efficace mais avez-vous une référence spécifique pour votre assertion? J'éviterais probablement d'utiliser cette construction en raison de la complexité supplémentaire, mais cela pourrait être approprié (pour moi) pour les grands ensembles de données s'il y a une nette différence de performance. –
Je n'ai pas de référence spécifique; c'est juste une affirmation que j'ai entendue de mes collègues et une que j'ai souvent trouvée être vraie dans mes propres expériences. Cette solution n'est pas nécessairement la meilleure pour chaque cas, il est donc préférable d'essayer chacun d'eux et de vérifier leurs plans d'exécution respectifs et de décider lequel est le meilleur à partir de là. – Aaron
Select * From Orders Where OrderID not in (Select Distinct OrderID From OrderItems)
essayer avec EXCEPTION LEFT JOIN
select *
from Orders
LEFT EXCEPTION JOIN OrderItems ON ...
+1 - Cool - n'ont pas vu celui-là avant. –
- 1. Trouver tous les enregistrements sans les associés
- 2. Enregistrements distincts associés à une table dans SQL Server
- 3. SQL-Copie d'un enregistrement avec ses enregistrements enfants associés
- 4. Supprimer les enregistrements avec SQL
- 5. MS SQL: Comment séparer les enregistrements qui n'ont pas de fils dans la même table?
- 6. activerecord: Trouver plus de non associés enregistrements associés à une seule requête
- 7. SSIS Rechercher - ignorer certains enregistrements
- 8. Détection de plusieurs enregistrements associés à une table
- 9. Linq-to-entities La méthode Include ne charge pas les enregistrements associés
- 10. rechercher un nombre qui n'est pas dans la colonne ID
- 11. Limiter un utilisateur pour afficher uniquement les enregistrements associés dans les rails
- 12. enregistrements sql dans les dernières heures
- 13. Comment puis-je copier un enregistrement SQL ayant des enregistrements associés dans d'autres tables dans la même base de données?
- 14. Enregistrement des enregistrements associés sans enregistrer l'enregistrement référencé en premier
- 15. obtenir les appareils associés Bluetooth
- 16. Comment obtenir tous les tags qui n'ont pas de messages associés dans CakePHP
- 17. Rechercher les enregistrements produits au cours de la dernière heure
- 18. Rails - rechercher des enregistrements par groupe
- 19. ActiveRecord trouver tous les parents qui ont des enfants associés
- 20. Comment puis-je récupérer des enregistrements d'une table et des enregistrements associés d'une autre table dans une requête?
- 21. Dans Postgres/SQL, comment rechercher des noms qui ne commencent pas par une lettre?
- 22. T-SQL - Comment écrire requête pour obtenir des enregistrements qui correspondent à tous les enregistrements dans un plusieurs à rejoindre
- 23. Sélectionnez parmi les enregistrements MySQL qui résument
- 24. Rechercher une colonne XML dans SQL
- 25. navigation pour limiter les enregistrements sql
- 26. Rechercher dans LINQ to SQL
- 27. Comment rechercher des enregistrements correspondant à l'attribut avec des valeurs 1+ dans ActiveRecord/SQL?
- 28. Objets associés non accessibles dans les vues dans Rails?
- 29. Insérer uniquement lorsque les enregistrements n'existent pas dans la table
- 30. limite de SQL pour les enregistrements uniques
C'est un * facile * un! En fait, un de mes collègues de soutien est venu hier et a posé exactement la même question. –