


WHERE vs ON dans les clauses JOIN : quand le placement du filtre est-il important ?
Comprendre la distinction entre les clauses WHERE et ON dans les requêtes JOIN
Considérez les scénarios suivants lors de la jointure de deux tables, Foo et Bar, en fonction de leur colonne BarId :
INNER JOIN avec WHERE Clause
SELECT * FROM Foo f INNER JOIN Bar b ON b.BarId = f.BarId WHERE b.IsApproved = 1;
INNER JOIN with ON Clause
SELECT * FROM Foo f INNER JOIN Bar b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
Ces deux requêtes renvoient les mêmes résultats. Cependant, lorsqu’il s’agit de jointures externes, une différence cruciale apparaît. Explorons l'utilisation d'un LEFT OUTER JOIN :
LEFT OUTER JOIN avec le filtre de clause ON
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
LEFT OUTER JOIN avec le filtre de clause WHERE
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.BarId = f.BarId) WHERE (b.IsApproved = 1);
Dans la première requête, les lignes de la table de droite (Bar) sont filtré en fonction de la colonne IsApproved pendant le processus de jointure. A l'inverse, dans la deuxième requête, ce filtrage est effectué après la jointure.
Cette distinction devient significative lorsqu'il y a une valeur nulle pour b.BarId. Dans la première requête, ces lignes seront toujours incluses dans les résultats (avec des valeurs nulles pour les colonnes de Bar). Dans la deuxième requête, ces lignes seront filtrées par la clause WHERE.
Équivalence pour les filtres OPTIONNELS
Pour un filtre OPTIONAL (par exemple, b.IsApproved n'est pas restreint), l'équivalent LEFT OUTER JOIN avec une clause WHERE serait :
SELECT * FROM Foo f LEFT OUTER JOIN Bar b ON (b.BarId = f.BarId) WHERE (b.IsApproved IS NULL OR b.IsApproved = 1);
Ceci considère à la fois le cas où la jointure échoue (b.BarId est nul et le filtre doit être ignoré) et le cas où la jointure réussit et le filtre doit être appliqué.
Conclusion
Bien que le placement d'un filtre dans la clause WHERE ou ON puisse sembler à première vue sans conséquence, les subtiles différences de comportement, en particulier pour les jointures externes, nécessitent un examen attentif. Cette distinction garantit une récupération précise des données et une optimisation efficace des requêtes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

MySQLViewShavelimitations: 1) Theydon'tsupportalLSQLOPERations, restreignantDatamanipulation à travers la vue

La bonne gestion de la gestion de la direction

MySQLDOES NONTIMPOSEAHARDLIMITORSTRIGRERS, BUTPRATICALFACTORSEDERTERMINETHEIREFFECTYUSE: 1) ServerConfiguration ImpactStriggerManagement; 2) ComplexTriggersInCreasgeSystemload; 3) LargerTableSlowtriggerPerformance; 4) HighCunCurrencyCanCauseTr fichestring; 5) M) M

Oui, il estafetostoreblobdatainmysql, maisonssider cesfacteurs: 1) stockage: BlobScConSugnifants espace, potentiellement en augmentation

L'ajout d'utilisateurs de MySQL via l'interface Web PHP peut utiliser les extensions MySQLI. Les étapes sont les suivantes: 1. Connectez-vous à la base de données MySQL et utilisez l'extension MySQLI. 2. Créez un utilisateur, utilisez l'instruction CreateUser et utilisez la fonction Password () pour crypter le mot de passe. 3. Empêchez l'injection SQL et utilisez la fonction mysqli_real_escape_string () pour traiter l'entrée de l'utilisateur. 4. Attribuez des autorisations aux nouveaux utilisateurs et utilisez la déclaration de subvention.

MySQL'sblobissuitable ForstoringBinaryDatawithInarelationDatabase, WhileLenosqloloptionsLikEmongoDB, redis et Cassandraofferflexible, ScalablesButions forununstructureddata.blobissimplerbutcanslowdownporduit

ToaddauserRinmysql, utilisation: CreateUser'Username '@' host'identifiedBy'password '; ici'showtodoitsecurely: 1) ChoosetheHostCarelyToCon trolaccess.2) setResourcelimits withoptionslikemax_queries_per_hour.3) usestrong, uniquepasswords.4) Enforcessl / tlsconnectionwith

ToavoidcomMonmistakeswithstringDatatyPesInmysql, compréhension de compréhension, chooseTherightType, andManageEncodingAndCollationSettingSeffectively.1) usECHARFORFIXED-LEGLINGSTRING


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Version Mac de WebStorm
Outils de développement JavaScript utiles

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP
