Делайте несколько запросов, которые не могут быть подзапросами в одном простом SELECT, приводите к одному многорядному результату, используя MySQL

Я имею в виду конкретную вещь, которая не может быть решена с помощью очень простого мультизапроса SELECT, показанный внизу: принять запрос 1

SELECT playername AS Rookie FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 129600 AND onlinetime < 648000 ORDER BY playername;

который возвращает результат как

+------------------+
| Rookie           |
+------------------+
| _Golden_Apple    |
| _MineTrick_      |
+------------------+

(только часть целого результата) и запрос 2

SELECT playername AS Eager FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 648000 AND onlinetime < 1296000 ORDER BY playername;

который возвращает как (только часть целого результата)

+-----------------+
| Eager           |
+-----------------+
| 1Herofox        |
| 1lyndon         |
+-----------------+

Идея состоит в том, чтобы объединить эти столбцы, чтобы получить что-то вроде этого:

+------------------+-----------------+
| Rookie           | Eager           |
+------------------+-----------------+
| _Golden_Apple    | 1Herofox        |
| _MineTrick_      | 1lyndon         |
+------------------+-----------------+

Запрос как

SELECT
    (SELECT playername FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 129600 AND onlinetime < 648000) AS Rookie,
    (SELECT playername FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 648000 AND onlinetime < 1296000) AS Eager
;

ведет в 1242 (21000): Subquery returns more than 1 row, Поиск в Google - это проблема, потому что я понятия не имею, какие слова использовать; используемый

mysql merge subqueries that return multiple rows
mysql multiple columns in result from subqueries
mysql select multiple queries as columns

просто чтобы получить что-то совершенно другое.

Результат в основном предназначен только для просмотра человеком, и строки не имеют ничего общего с другими столбцами, поэтому то, какие средства используются для объединения этих столбцов, не имеет значения, если производительность не слишком снижается; учитывая, что они не связаны вообще, делает JOINЭто похоже на неправильный инструмент.

Вот где мое понимание останавливается.

2 ответа

Пытаться:

SELECT Rookie.playername as Rookie, Eager.playername as Eager from 
    (SELECT distinct playername FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 129600 AND onlinetime < 648000) Rookie 
JOIN 
    (SELECT distinct playername FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 648000 AND onlinetime < 1296000) Eager
;

Ты ищешь UNION:

SELECT playername, 'Rookie' as Rank
  FROM MinecraftMySQL.`lb-players`
  WHERE onlinetime >= 129600 AND onlinetime < 648000
UNION
SELECT playername, 'Eager' as Rank
  FROM MinecraftMySQL.`lb-players`
  WHERE onlinetime >= 648000 AND onlinetime < 1296000
ORDER BY playername;
Другие вопросы по тегам