INSERT INTO SELECT语句

时间:2016-09-08 16:32:47

标签: sql

我有一个带有Identity列(ArticleID)的表。我想选择表中的最后一行并将值插入特定列(ArticleImage)。我已经有了价值,所以我不需要查询它。我在SQL语句中的哪个位置放置了这个值?

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

2 个答案:

答案 0 :(得分:2)

您可以使用子查询或可更新的CTE执行此操作:

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

答案 1 :(得分:1)

就像评论员所暗示的那样,你需要一个UPDATE语句,而不是INSERT。更新,更新已存在的记录,其中INSERT创建一个整个品牌打屁股新记录。

由于您希望根据排序更新特定记录,因此比UPDATE <table> SET <field>='Somevalue';更复杂一些。您通过SELECT TOP 1..查询朝着正确的方向前进。

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

该子查询获取最大ArticleID。外部UPDATE语句然后更新Articleid的记录,将ArticleImage设置为您想要在那里保留的任何值。