0

このようなクエリがあります

SELECT DISTINCT
    [fldID],
    [fldValue]
            FROM
                (
                    (
                        SELECT
                            alias1.[fldID],
                            alias1.[fldValue]
                        FROM someT as alias1
                            ....
                    )
                ) AS subQuery_1
            INNER JOIN
            (
                SELECT
                    alias1.[fldID],
                    alias1.[fldValue]
                FROM someT as alias1
                    ...
            ) AS subQuery_2 USING( fldID, fldValue) 

MySQL では問題なく動作しますが、SQL Server は USING をサポートしていません。したがって、次のように JOIN を使用する必要があります。

ON [subQuery_1].[fldID] = [subQuery_2].[fldID] 
AND [subQuery_1].[fldValue] = [subQuery_2].[fldValue]

しかし、このクエリはエラーにつながります:

Ambiguous column name fldID 
Ambiguous column name fldValue

では、SQL Server でこのような種類の JOIN を実装するにはどうすればよいでしょうか?

4

2 に答える 2

2

どのサブクエリからそれらの列を取得するかを指定するだけです (両方の列を結合する場合、ケースでどちらを取得するかは問題ではありません)。

SELECT DISTINCT
subQuery_1.[fldID],
subQuery_1.[fldValue]
        FROM
            (
                (
                    SELECT
                        alias1.[fldID],
                        alias1.[fldValue]
                    FROM someT as alias1
                        ....
                )
            ) AS subQuery_1
        INNER JOIN
        (
            SELECT
                alias1.[fldID],
                alias1.[fldValue]
            FROM someT as alias1
                ...
        ) AS subQuery_2 
 ON [subQuery_1].[fldID] = [subQuery_2].[fldID] 
 AND [subQuery_1].[fldValue] = [subQuery_2].[fldValue]
于 2013-10-10T11:50:43.940 に答える
0

クエリでは、最終選択にテーブル エイリアスを追加していません。次のように、どのテーブルからどの列を取得するかを指定する必要があります。

SELECT DISTINCT
    subQuery_1.[fldID],
    subQuery_1.[fldValue]
            FROM
                (
                    (
                        SELECT
                            alias1.[fldID],
                            alias1.[fldValue]
                        FROM someT as alias1
                            ....
                    )
                ) AS subQuery_1
            INNER JOIN
            (
                SELECT
                    alias1.[fldID],
                    alias1.[fldValue]
                FROM someT as alias1
                    ...
            ) AS subQuery_2 
            on [subQuery_1].[fldID] = [subQuery_2].[fldID] 
AND [subQuery_1].[fldValue] = [subQuery_2].[fldValue]
于 2013-10-11T07:31:06.390 に答える