2009-12-11 11 views
269

私は、MySQLMySQLで「すべての派生テーブルには別のエイリアスが必要です」というエラーは何ですか?

SELECT ID FROM (
    SELECT ID, msisdn 
    FROM (
     SELECT * FROM TT2 
    ) 
); 

にこのクエリを実行していますし、このエラーを与えている:

Every derived table must have its own alias.

このエラーの原因は何?

SELECT ID 
FROM (SELECT ID, 
      msisdn 
     FROM (SELECT * FROM TT2) as myalias 
    ) as anotheralias; 

しかし、なぜあなたは最初の場所でこのクエリを記述します。

+13

"select ID from TT2"として単純化できませんでしたか? – DMKing

+2

多くの 'UNION ALL'sを持つクエリで余分な') 'があったので、最近このエラーが発生しました。 – mpen

+9

これは#1 Google検索の仕組みを見ています...受け入れられた回答は、「すべての派生テーブルには別のエイリアスが必要です」というエラーに実際には答えません。詳細は下記をご覧ください。 –

答えて

380

すべての派生テーブル(AKAサブクエリ)にはエイリアスが必要です。私。角括弧内の各クエリには別名(AS whatever)を指定する必要があります。このクエリは、外部クエリの残りの部分を参照するために使用できます。あなたのケースでは

SELECT ID FROM (
    SELECT ID, msisdn FROM (
     SELECT * FROM TT2 
    ) AS T 
) AS T 

、当然のことながら、クエリ全体を置き換えることができます。

​​
+16

この質問を見ているほとんどのユーザーにとって、示されたsampeコードの正解ですが、解決策はありません。 – ToBe

+1

@ToBeあなたはそれが何を意味するのか不思議です。あなたがfrom節に派生テーブルを持っていれば、それに別名を付ける必要があります。 – AdamMc331

+2

申し訳ありませんが、元のクエリを修正し、 'AS'ステートメントを追加しました。私はあなたが省略形を示しただけだと思った。私のdownvoteを削除しました。 – ToBe

64

は、私はあなたがこれを行うに求めていると思いますか?

+8

実際のクエリが長すぎます。私はそれを十分に短くして、ここの人々がそれを理解する時間が少なくて済みました。短いクエリと長いクエリのエラーは同じでした。 – silverkid

+0

私は今理解しています。私はそれがいくつかのコードによって生成されたかもしれないと考えていました。ポールとDMKingが示唆しているように、それはまだ単純化するべきです。 – hometoast

+8

うわー、これは本当に2番目の答えに受け入れられていませんか?問題を抱えている人にはこれが答えです.MySQLでは、他の多くの実装と同じように残すのではなく、「サブクエリ」というラベルを付ける必要があります。 –

11

ここで別名なしで書き換えることはできません別の例(できないGROUP BY DISTINCT)があります。

storescustomersによって行われた購入を記録purchasesというテーブル、すなわちを想像し、それは多くのテーブルに多くのだとソフトウェアは、複数の店で買い物をしている顧客に知っておく必要があります。

SELECT DISTINCT customer_id, SUM(1) 
    FROM (SELECT DISTINCT customer_id, store_id FROM purchases) 
    GROUP BY customer_id HAVING 1 < SUM(1); 

。エラーはEvery derived table must have its own aliasで破損します。修正するには:

SELECT DISTINCT customer_id, SUM(1) 
    FROM (SELECT DISTINCT customer_id, store_id FROM purchases) AS custom 
    GROUP BY customer_id HAVING 1 < SUM(1); 

AS customエイリアスに注意してください)。

+0

サブクエリに対するSUM(1)の影響は何ですか? –

関連する問題