MySql. Comment utiliser l'Auto Rejoindre
J'ai besoin d'utiliser l'Auto Rejoindre sur cette table.
+------------+------+--------+
| Country | Rank | Year |
+------------+------+--------+
|France | 55 | 2000 |
+------------+------+--------+
|Canada | 30 | 2000 |
+------------+------+--------+
|Liberia | 59 | 2001 |
+------------+------+--------+
|Turkey | 78 | 2000 |
+------------+------+--------+
|Japan | 65 | 2003 |
+------------+------+--------+
|Romania | 107 | 2001 |
+------------+------+--------+
J'ai besoin d'utiliser l'auto inscrivez-vous pour obtenir ce pays a la même année que la Turquie.
Afficher le Pays et l'année seulement.
C'est ce que je suis en train de faire.
SELECT DISTINCT a.Country, a.Year
FROM table1 AS a, table1 AS b
WHERE a.Year=b.Year and a.Country='Turkey';
^ googlé soi joindre, et il en a fait.
Je suis seule la Turquie. Ce que je fais mal?
+1 pour les essayer et de googler.
Cette requête est similaire à
jsut change
un.pays " à b.country
.Cette requête est similaire à
SELECT Country, Year FROM table1 WHERE Country='Turkey';
c'est pourquoi vous obtenez seulement la TurquieOriginalL'auteur hank99 | 2013-05-22
Vous devez vous connecter pour publier un commentaire.
Vous êtes si proche!!!!
Puisque vous dites que vous êtes affichant le pays et l'année d'Une et de limiter par
A. Country
de la Turquie, la Turquie est tout ce que vous allez voir. Vous devez soit modifier le choisit pour êtreB.country
etB.year
ou de modifier la clause where pour êtreB.country
.C'est à l'aide d'une jointure croisée qui vous permettra d'être plus lent plus d'enregistrements dans une table.
peut être écrit comme... et aurait probablement le même plan d'exécution.
OU
Il utilise une JOINTURE INTERNE qui limite le travail, le moteur doit faire et ne pas souffrir de la dégradation de la performance que d'une jointure croisée serait.
POURQUOI:
Réfléchir à ce que le moteur SQL va faire quand la jointure se produit
A B
Alors, quand vous avez dit d'affichage
A.Country
etA.Year
oùA.Country
est de la Turquie, vous pouvez voir tout ce qu'il peut retourner est de la Turquie (en raison de la nette seulement 1 dossier)Mais si vous ne
B.Country
est de la Turquie et de l'affichageA.Country
, vous obtiendrez la France, le Canada et la Turquie!OriginalL'auteur xQbert
Changement
a.Country = 'Turkey'
àb.Country = 'Turkey'
Vous avez
SELECT DISTINCT a.Country
, mais votre état esta.Country = 'Turkey'
. Même si vous avez plusieurs lignes, elles sont filtrées par laDISTINCT
répondre à cette question
OriginalL'auteur Explosion Pills
OriginalL'auteur griffintaur