MySQL - ВЫБРАТЬ имя, которое появляется в алфавитном порядке

Я начал изучать MySQL.

Вот таблица world:

+-------------+-----------+---------+
|    name     | continent |  area   |
+-------------+-----------+---------+
| Afghanistan | Asia      | 652230  |
| Albania     | Europe    | 2831741 |
| Algeria     | Africa    | 28748   |
| ...         | ...       | ...     |
+-------------+-----------+---------+

Мне нужно:

Перечислите каждый континент и название страны, которая поступает первым в алфавитном порядке

Результат SELECT должен быть:

+---------------+---------------------+
|   continent   |         name        |
+---------------+---------------------+
| Africa        | Algeria             |
| Asia          | Afghanistan         |
| Caribbean     | Antigua and Barbuda |
| Eurasia       | Armenia             |
| Europe        | Albania             |
| North America | Belize              |
| Oceania       | Australia           |
| South America | Argentina           |
+---------------+---------------------+

Ответ 1

Это простая aggegation:

SELECT continent, MIN(name) AS name
FROM world 
GROUP BY continent
ORDER by continent

Ответ 2

Если это упражнение из SQLZoo, то IMO должно выглядеть примерно так:

select continent, name from world x
where name = (select name 
                  from world y 
                  where  x.continent =  y.continent 
                  order by name asc 
                  limit 1)

P.S. Сейчас я изучаю SQL, и этот пост помог мне. Спасибо @Parado!)

Обновление: я нашел этот сайт с ответами. Полезно, если стек.

Ответ 3

Попробуйте это

select distinct  w.continent, 
                 (select w2.name 
                  from world w2 
                  where  w.continent =  w2.continent 
                  order by name asc 
                  limit 1) name 
from world w
order by w.continent

Ответ 4

Решение SqlZoo будет выглядеть следующим образом:

SELECT continent, name FROM world x
WHERE name <= ALL
  (SELECT name FROM world y WHERE y.continent=x.continent)

Ответ 5

SELECT  distinct x.continent , x.name
FROM world x ,world y 
WHERE x.name = (SELECT y.name FROM world y
 WHERE y.continent=x.continent order by y.name asc limit 1 ) ;

Ответ 6

как насчет этого sql:

select distinct continent, 
      (select name 
       from world y where y.continent = x.continent limit 1 ) as name 
from world x

Ответ 7

SELECT continent,
       name
FROM world x
WHERE name=
    (SELECT name
     FROM world y
     WHERE x.continent=y.continent
     ORDER BY name
     LIMIT 1)

Это коррелированный/синхронный запрос.

Ответ 8

select continent, name from world group by continent order by name

Ответ 9

Попробуйте это

SELECT continent, name FROM world ORDER BY name ASC;

Ответ 10

Если вам нужен список всех континентов в алфавитном порядке, вы используете

     SELECT * from world ORDER by continent

Но если вы указали список каждой страны, в которой вы используете

     SELECT * from world ORDER by name