質問

あなたは左を実行すると、

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として返されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top