TSQL左には、複数の右列に参加します
-
12-09-2019 - |
質問
あなたは左を実行すると、
TSQL(MSSQLサーバ)に参加し、右側の複数の行がある場合は、行は、クエリで返されるすべての保証はありますか?
私は右の表の順序付けを利用するためにこれを使用しようとしています。
これ
Select ColA, ColB, ColC
from T
Left Outer Join
(Select ColA, ColB, ColC
from T--CLARIFIED, this is a self join.
Order by TopColumn Desc) AS OrderedT(ColA, ColB, ColC)
On T.ColA = OrderedT.ColA
私はすべてのコーラの表では、すべての最初の行のコーラ結果のセットの中を取得するために期待する私の左の私の順序に基づいて参加します。
言語やサーバーで、この上で行われた保証はありますか?
解決
私はあなたが
...これが必要と考えていますselect T.ColA, T.ColB, T.ColC
from T
inner join
(select ColA, max(TopColumn) MaxTopColumn
from T
group by ColA) OrderedTable
on T.ColA = OrderedTable.ColA and T.TopColumn = OrderedTable.MaxTopColumn
バージョン管理テーブルのためのかなり一般的なクエリは、内部が最大クエリに結合が必要。
テーブル名「表」私はTと改名しましたが、問題を助けません。
他のヒント
は単純ではありません。 LEFTは戻って、一致するすべての右側の列に参加します。だからここ保障上の問題は本当に関係ありません。あなたは、サブクエリにTOP 1を使用して、あなたが必要とする単一の行を取得するサブクエリで何かをしなければならないと思います。
LEFTは、すべての左側列に関係なく、一致する行が(ジョインキー(S)上に)右側に存在するか否かの任意の場所基準を満たす戻りJOIN。結合キーが一致しないところを右表の列はNULLとして返されます。
所属していません StackOverflow