2016-09-08 30 views
-1

私はID列(ArticleID)を持つテーブルを持っています。私はテーブルの最後の行を選択し、特定の列(ArticleImage)に値を挿入したいと思います。私はすでに価値があるので、私はそれを照会する必要はありません。 SQL文のどこにこの値を置くのですか?INSERT INTO SELECT文の構文

INSERT INTO EasyDNNNews (ArticleImage) 
SELECT TOP 1 FROM EasyDNNNews 
ORDER BY ArticleID DESC 
+2

ので、あなたは**あなたがしたい、**新しい行を挿入する必要はありません**更新** 1(ヒントあなたの答えは太字で表示されます) – Lamak

+4

どのようなSQL - MySQL、MS Access、SQL Server?製品によっては回答が異なる場合があります – dbmitch

+0

@Lamk ...あなたは正しいです。私はレコードを更新しています。ありがとう! –

答えて

1

コメント欄には、INSERTではなくUPDATE文が必要です。 UPDATEは、すでに存在するレコードを更新します。ここでは、INSERTがブランド全体の新しいレコードを作成します。

ソートに基づいて特定のレコードを更新する必要があるため、あなたはちょうどUPDATE <table> SET <field>='Somevalue';より少し複雑です。 SELECT TOP 1..クエリで正しい方向に向かっていました。サブクエリが最大ArticleIDをフェッチする

UPDATE EasyDNNNews 
SET ArticleImage = 'YOURVALUE' 
WHERE ArticleID = (SELECT TOP 1 ArticleID FROM EasyDNNNews ORDER BY ArticleID Desc)` 

。次に、外部UPDATE文は、そのArticleIDのレコードを更新し、ArticleImageを設定したい値に設定します。

+0

はうまくいった。ありがとう! –

2

あなたは、サブクエリまたは更新可能なCTEでこれを行うことができます。

WITH toupdate as (
     SELECT TOP 1 d.* 
     FROM EasyDNNNews d 
     ORDER BY ArticleID DESC 
    ) 
UPDATE toupdate 
    SET ArticleImage = ??; 
+0

私は更新可能なCTEも知らなかった。それはとても便利です。 – JNevill

関連する問題