2016-11-02 19 views
-1

こんにちは私はこれを持っていますitem about insert if not existsここに。私が知りたいことの1つは、最新のアイテムをCompResultsからResultDateで注文し、Competitorsテーブルに挿入したいのですが、どうすればいいですか?SQL:条件付き挿入

エラーが発生しました:SELECT DISTINCTが指定されている場合は、ORDER BY項目が選択リストに表示されている必要があります。

+0

providあなたのテーブル構造 – Beginner

+1

あなたが使用しているRDBMSを最初に見つけ出す – Strawberry

+0

1)ORDER BYはINSERTを行うとき意味がありません。 2)エラーメッセージにすべてが表示されます。 – jarlh

答えて

0

使用Row_Numberは、各項目

Insert into Competitors(col1,col2..) 
Select col1,col2,.. 
(
Select row_number()Over(partition by Name order by ResultDate desc) Rn, * 
From CompResults cr 
NOT EXISTS (SELECT 1 FROM Competitors c 
       WHERE cr.Name = c.cName) 

) a 
Where Rn = 1 
0

の最新のレコードを取得するためにも、あなたは以下のようにすることができます:

INSERT Competitors (cName) 
SELECT 
    A.Name 
FROM 
    CompResults A INNER JOIN 
    (
     SELECT 
      CR.Name, 
      MAX(CR.ResultsDate) MaxResultsDate 
     FROM 
      CompResults CR 
    ) B ON A.Name = B.Name AND A.ResultsDate = B.MaxResultsDate 
WHERE 
    NOT EXISTS (SELECT 1 FROM Competitors c 
       WHERE c.cName = A.Name) 
1

こんにちは、あなたはselect文のフィールド順を使用する必要があり、私はあなたがいると思いますSQL Serverを使用して
サブクエリを使用することができます

INSERT Competitors (cName) 
select Name 
from (
SELECT cr.Name,max(cr.ResultDate) 
FROM CompResults cr 
WHERE NOT EXISTS (SELECT * FROM Competitors c 
WHERE cr.Name = c.cName) group BY cr.name) as t order by ResultDate