我有以下问题。我运行这个请求,它成功通过,但它说"0(受影响的行)"。总之,我想做什么。我试图编写一个查询,将元素添加到主表中因为我链接了子表我试图检索id并将它们放入主表
INSERT INTO Articles
([ID],
[ArtName],
[ArtType],
[SerNo],
[MACNo],
[UserID],
[Available],
[CityID],
[StoreID],
[WorkplaceID],
[ItemPrice],
[IP_01],
[IP_02],
[Note])
SELECT
(SELECT max([ID])+1 FROM Articles),
'HP',
art.ID,
'123',
'А18Н31',
u.ID,
av.ID,
c.ID ,
s.ID,
w.ID,
'14.23',
'192.168.11.3',
'192.168.11.3',
GetDate()
FROM Articles a
INNER JOIN Workplace w ON a.WorkplaceID = w.ID
INNER JOIN Store s ON a.StoreID = s.ID
INNER JOIN City c ON a.CityID = c.ID
INNER JOIN Avaiable av ON a.Available = av.ID
INNER JOIN Users u ON a.UserID = u.ID
INNER JOIN ArtType art ON a.ArtType = art.ID
WHERE c.CityName LIKE '%Sofia%' AND art.ArtTypeName LIKE '%FirstType%' AND s.StoreName LIKE '%First%' AND av.AvaiableName LIKE '%yes%' AND u.UserName LIKE '%Valq%' AND w.WorkplaceName LIKE '%FWorkplace%'
显示" 0行受影响";因为SELECT
不返回任何行。这可能是因为没有匹配的JOIN
s。这可能是因为WHERE
子句过滤掉了所有行。没有样本数据,就无法判断。你必须调查你自己。
也就是说,这是非常可疑的:
(SELECT max([ID])+1 FROM Articles),
这不是在表中使用增量id的正确方式。您应该使用identity
列。或者可能默认为一个序列。在任何一种情况下,id
的值都将在插入行时自动设置。
还请注意,如果插入多行,所有行都将得到相同的id
,这可能不是您想要的。