MySQL: Comment grouper des lignes SELECT avec plusieurs paires dans la clause WHERE
Disons que j'ai une table, email_phone_notes
qui ressemble à ceci:
+-----------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+-------+
| email | varchar | NO | PRI | NULL | |
| phone | varchar | NO | PRI | NULL | |
| notes | text | NO | | 0 | |
+-----------------------+--------------+------+-----+---------+-------+
Donc, chaque e-mail/téléphone combinaison est unique, mais vous pouvez avoir plusieurs adresses e-mail avec les numéros de téléphone différents et vice versa. C'est un peu artificiel, mais elle reflète mon scénario.
J'aimerais faire une requête de ce type:
SELECT * FROM email_phone_notes WHERE email = '[email protected]' AND phone = '555-1212';
Mais, j'aimerais faire plusieurs paires à la fois, donc je ne pas avoir à faire plusieurs SELECT
requêtes. Il est également important de garder les paires parce que je ne veux pas retourner un errant téléphone/e-mail combinaison qui n'a pas été demandé.
Je pourrais faire quelque chose comme cela, mais pour la possibilité de plusieurs centaines de valeurs de la requête sera très long.
SELECT * FROM email_phone_notes WHERE (
(email='[email protected]' && phone='555-1212') ||
(email='[email protected]' && phone='888-1212') ||
...
Est-il une solution plus élégante, ou devrais-je m'en tiens à cela? Merci!
source d'informationauteur Newtang
Vous devez vous connecter pour publier un commentaire.
Si vous êtes après, élégant SQL, vous pouvez utiliser la ligne constructeurs:
Cependant, ce n'est pas tout indice-friendly et ne serait pas être recommandé sur un tableau de taille importante. Au lieu de cela, vous pouvez matérialiser une table avec votre choix de paires et de rejoindre votre table:
Ou d'autre pré-remplir un (temporaire) de la table:
Vous pouvez utiliser un ligne constructeur comme ceci:
SQLfiddle exemple