2016-12-30 48 views
0

私は何をしようとしているのか苦労しています。テーブル1から1番目のレコードを選択する必要があります。値と一緒に。テーブル1の最初の一致するレコードをテーブル2に一致するものを選択

私は数多くの方法を試して、多数の投稿を見てきました。しかし、私は1レコードまたはすべてのレコードを返すことができます。

私の以前の試みは以下の通りです:戻り上記

SELECT a.URL, 
    a.Caption 
FROM [EAN].[DBO].[tblHotelImageList] a 
WHERE a.EANHotelID IN 
    (SELECT b.EanHotelId FROM [EAN].[DBO].[tblEanFullTextSearch] b 
) 
GROUP BY a.URL, 
    a.Caption; 

すべてのレコードを返す上記

SELECT a.Caption, 
     a.URL 
    FROM [EAN].[dbo].[tblHotelImageList] a 
    LEFT JOIN [EAN].[dbo].[tblEanFullTextSearch] b 
    ON b.EanHotelId = a.EANHotelID 
    AND b.EanHotelId = 
     (SELECT TOP 1 
       a.EANHotelID 
      FROM [EAN].[dbo].[tblHotelImageList] 
      WHERE a.EANHotelID = b.EanHotelId 
     ) 
; 

すべてのレコードが

現時点では上記のコードは唯一のレコードを取得しようとしています、私はレコードでテーブルを更新しようとしていません。

+0

こんにちはDVT私は瞬間を選択しようとしている、私は克服の問題を抱えている更新を試みるだろう、私は私の質問で述べた。最初のレコードの直後に注文はありません –

+0

最初のレコードから最初のレコードが返されますか?どのように最初のレコードが決定するのですか?最初のORDER BYと同様に、最初のものを決定します。 – JeffO

答えて

1

の代わりにleft joinouter applyを使用します。

通常、あなたが1行をしたいとき、あなたが特定の順序に基づいて行をしたいです。それが「??」 〜のためです。

UPDATEにも同様のロジックを使用できます。

+0

こんにちはGurwinder Singhは、以前試したように動作しませんゲスト レストラン http://hotels/1000000/10000/100/1/1_13_b.jpg http:// hotels/1000000/10000/100/1/1_14_b.jpg 211452 IDは同じ211452 –

0

必須のレコードは表2(tblEanFullTextSearch)にあるため、クエリのドライバを作成してください。あなたはすべてのEanHotelIdの値の最初の試合が必要な場合は、このようなクエリを変更することができ

SELECT TOP 1 
    a.Caption, 
    a.URL 
FROM [EAN].[dbo].[tblEanFullTextSearch] b 
INNER JOIN [EAN].[dbo].[tblHotelImageList] a 
    ON b.EanHotelId = a.EANHotelID 
ORDER BY a.EANHotelID; 

:このクエリは、あなたが尋ねない

SELECT TOP 1 
    a.Caption, 
    a.URL 
FROM [EAN].[dbo].[tblEanFullTextSearch] b 
INNER JOIN (
    SELECT Caption, 
     URL, 
     EanHotelId, 
     ROW_NUMBER() OVER (Order By EanHotelId) as RowID 
     FROM [EAN].[dbo].[tblHotelImageList] 
    ) a 
    ON b.EanHotelId = a.EANHotelID 
WHERE RowID = 1 
ORDER BY a.EANHotelID; 

最初を選択するための別の基準は、おそらくあります一致しますが、あなたの質問にはありません。

+0

Vergilさん、笑われました。残念ながら、両方の例が1行しか返しません。 –

+0

2番目の例は、すべての場合が間違っています。 SELECT文から 'Top 1'句を削除します。私のタイプミス、私のせい。 –

関連する問題