0

SELECT一番下に示されている、非常に単純な multi-subquery では解決できない特定のことを念頭に置いています。

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。どの単語を使用すればよいかわからないため、グーグルは問題です。使用済み

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

まったく違うものを手に入れるためだけに。

結果は主に人間が見るためのものであり、行は他の列とは何の関係もありません。したがって、パフォーマンスが大幅に低下しない限り、そのような列をマージするためにどのような手段が使用されるかは問題ではありません。それらがまったく関連していない場合、 はJOIN間違ったツールのように見えます。

そこで私の理解は止まります。

4

2 に答える 2

0

あなたが探している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;
于 2015-06-07T20:13:18.653 に答える