2017-11-14 17 views
0

サブクエリを使用してCOUNTをクエリすると、H2の異常な動作が認識されます。"重複列名"を持つH2データベースでサブクエリに失敗しました

テーブルを準備します。

CREATE TABLE Foo 
(
    id INT PRIMARY KEY AUTO_INCREMENT, 
    fieldName VARCHAR(30) NOT NULL, 
); 

テスト単純なクエリ(正常に動作します):

SELECT F1.id, F2.id from Foo as F1 INNER JOIN Foo F2 on F1.id = F2.id 

数とテストと同じクエリ:

SELECT count(*) FROM (
    SELECT F1.id, F2.id from Foo as F1 INNER JOIN Foo F2 on F1.id = F2.id 
) q; 

は、次のエラーを得た:

[42S21][42121] Duplicate column name "ID"; SQL statement: select count(*) FROM (

回避策はありますか?

更新日: 問題はサブクエリ列名を準備する際に消去その元のテーブル名にあったし、実際に私が持っている:

SELECT count(*) FROM (
    SELECT id, id from q 
); 

Abdul Rasheedで述べたように)エイリアスを追加する問題を修正。

+2

を、F2.idはそうuはエイリアスを使用して、HV、名前がIDです持っています。例F1.idをid1、F2.idをid2 ... –

+1

として結合することは意味をなさない。 –

答えて

1

別名で同じフィールドと同じテーブルを使用する理由を理解できません。 は、なぜあなたは、単にそのようなクエリを使用しないでください:両方の列F1.id

SELECT count(id) FROM Foo 
+0

これは単純な例です。同じ問題: SELECT count(*)FROM( Foo1からのSELECT F1.id、F2.idをF1 INNER JOIN Foo2 F2 on F1.id = F2.id )q; – Tapac

関連する問題