2012-02-08 24 views
-1

MySQL 3.23を実行している古いBugZilla MySQL DBでUNION文を使用しようとしています。ここに私がしようとしているものの簡略版があります。エキゾチックではありませんが、MySQLは何かが間違っていると言っています。MySQL 3.23 UNIONがエラー1064で失敗する

(select bug_id,rep_platform from bugs where rep_platform='XX') 
UNION 
(select bug_id,rep_platform from bugs where rep_platform='YY'); 

私が得る結果は次のとおりです。

ERROR 1064 (HY000): You have an error in your SQL syntax near '(select bug_id,rep_platform from bugs where rep_platform='XX') 
UNION 
(select bu' at line 1 

これは本当にあなたが得ることができるようにunion文の程度に簡単です。何か案は?

EDIT:MySQL 5 DBで非常によく似たクエリを実行しましたが、うまくいきました。ドキュメントやGoogle検索で表示されないこれらのUNION構文は、MySQL 3上で特別なものですか?だけではなく、これをしないのはなぜ

+0

あなたには2つのものが必要です。私の答えを見てください。私はそれを更新しました。 – RolandoMySQLDBA

答えて

0

にUNIONが動作していない理由を選択MySQL 3はUNION文をサポートしていないためです。公式documentationを見てください。

UNIONは、複数のSELECT文の結果を単一の結果セットに結合するために使用されます。 UNIONはMySQL 4.0.0から利用可能です。

回避方法はarticleを参照してください。

+0

うわー、それは私の目の前にあった。私が読んでいたドキュメントは、UNION構文の3.23,4.0,4.1リファレンスマニュアル(第12.2.7.3章)でした。 UNIONが4.0以上でサポートされていると私は完全に逃しているという小さな宣言があります。回避策をありがとう。 – jercra

3

SELECT DISTINCT bug_id, rep_platform 
    FROM bugs 
    WHERE rep_platform IN ('XX', 'YY'); 
+0

'bug_id'が' PRIMARY KEY'ならば、 'DISTINCT'をスキップすることもできます。 –

+0

私は単純化していました。実際のクエリはより複雑です。投稿したクエリはうまくいくはずですが、そうではありません。 – jercra

0

は、私はあなたがジョーの答えは目にはるかに簡単で楽しいです

select bug_id,rep_platform from bugs A where rep_platform='XX' 
UNION 
select bug_id,rep_platform from bugs where rep_platform='YY'; 

を意味だと思います。ジョーの+1。私が作った

2つの変更が、私は私が最初のバグの隣のテーブルの別名Aを入れ

  • すべての括弧を落とし

    1. ある
  • +0

    サブクエリは必要ありませんが、いずれの方法でも、コピーして貼り付けても同じエラーが発生します。 – jercra