Jesteś tak blisko!
Ponieważ mówisz, że wyświetlasz kraj i rok z A i ograniczasz przez A. Country Turcji, Turcja to wszystko, co zobaczysz. Musisz zmienić wybrane na B.country i B.year lub zmień klauzulę WHERE na B.country .
Jest to użycie łączenia krzyżowego, które będzie stawać się wolniejsze, im więcej rekordów jest w tabeli.
SELECT DISTINCT b.Country, b.Year
FROM table1 AS a,
table1 AS b
WHERE a.Year=b.Year
and a.Country='Turkey';
mógłby być napisany jako... i prawdopodobnie miałby taki sam plan wykonania.
SELECT DISTINCT b.Country, b.Year
FROM table1 AS a
CROSS JOIN table1 AS b
WHERE a.Year=b.Year
and a.Country='Turkey';
ORTo używa INNER JOIN, które ogranicza pracę, którą musi wykonać silnik, i nie cierpi z powodu pogorszenia wydajności, które miałoby miejsce przy łączeniu krzyżowym.
SELECT DISTINCT a.Country, a.Year
FROM table1 AS a
INNER JOIN table1 AS b
on a.Year=b.Year
and b.Country='Turkey';
DLACZEGO:
Zastanów się, co zrobi silnik SQL, gdy nastąpi złączenieA B
+------------+------+--------+------------+------+--------+
| A.Country | Rank | Year | B.Country | Rank | Year |
+------------+------+--------+------------+------+--------+
|France | 55 | 2000 |France | 55 | 2000 |
+------------+------+--------+------------+------+--------+
|Canada | 30 | 2000 |France | 55 | 2000 |
+------------+------+--------+------------+------+--------+
|Turkey | 78 | 2000 |France | 55 | 2000 |
+------------+------+--------+------------+------+--------+
|France | 55 | 2000 |Canada | 30 | 2000 |
+------------+------+--------+------------+------+--------+
|Canada | 30 | 2000 |Canada | 30 | 2000 |
+------------+------+--------+------------+------+--------+
|Turkey | 78 | 2000 |Canada | 30 | 2000 |
+------------+------+--------+------------+------+--------+
|France | 55 | 2000 |Turkey | 78 | 2000 |
+------------+------+--------+------------+------+--------+
|Canada | 30 | 2000 |Turkey | 78 | 2000 |
+------------+------+--------+------------+------+--------+
|Turkey | 78 | 2000 |Turkey | 78 | 2000 |
+------------+------+--------+------------+------+--------+
Więc kiedy powiedziałeś wyświetl A.Country i A.Year gdzie A.Country to Turcja, widać, że wszystko, co może zwrócić, to Turcja (ze względu na wyróżniający się tylko 1 rekord)
Ale jeśli zrobisz B.Country jest Turcja i wyświetla A.Country , dostaniesz Francję, Kanadę i Turcję!