是否可以将where子句与insert语句一起使用。在我的场景中我没有得到如何使用更新查询,因为子查询返回多个值。 我的查询是这样的。
INSERT EntityAttributeValue
(
EntityID
)
SELECT ID
FROM (SELECT ID
FROM (SELECT ID,
ROW_NUMBER() over(ORDER BY ID) Row
FROM Item
)
x
WHERE Row BETWEEN 1 AND 400
)
x
WHERE Value='10KT Gold'
我想要做的是,我在EntityAttributeValue表中有EntityID和Value列,而Other表是包含ID的Item表。所以加入就是这样的方式Item.ID = EntityAttributeValue.EntityID。现在,我想将Item表中的批量ItemID值插入到EntityAttributeValue表中,其中values ='10KT Gold'。
请告诉我。
答案 0 :(得分:2)
这是你需要的吗?
INSERT EntityAttributeValue
(
EntityID
)
SELECT ID
FROM (SELECT ID,
ROW_NUMBER() over(ORDER BY ID) Row
FROM Item
WHERE Value='10KT Gold'
)
x
WHERE Row BETWEEN 1 AND 400
答案 1 :(得分:1)
有几个问题
您使用x
两次作为表名。即使它有效,也会让任何人感到困惑。每次都使用新名称。
在列名前面添加表名,以明确其中的内容。
value
来自哪里?它不在您执行的任何查询的结果集中。
[编辑]此查询应该有效:
INSERT EntityAttributeValue
(
EntityID
)
SELECT x2.ID
FROM (SELECT x1.ID
FROM (SELECT i.ID,
ROW_NUMBER() over(ORDER BY i.ID) Row
FROM Item i
)
x1
WHERE Row BETWEEN 1 AND 400
)
x2
join EntityAttributeValue eav on x2.ID = eav.EntityID
WHERE eav.Value='10KT Gold'
但结果可能不是您想要的,因为它只会选择EntityAttributeValue
中已有的项目。