只有当tableB中的特定列等于某个值时,我才能使用什么语句来INSERT INTO tableA新行,其中tableB包含“itemid”,tableA也包含“itemid”。我想到了INNER JOIN,但这有可能吗?
我还需要完全相同的DELETE方法。
答案 0 :(得分:7)
听起来你想要的是这个:
insert into items(projectid,description)
select P.ProjectId, '@descriptionval'
from Projects P
where P.Active = 1 and P.ProjectID = '@projectidval'
如果我正确理解你的模式,你就不能进行INNER JOIN,因为tableA还没有匹配的行。
现在要删除,你现在都有这两行,所以你将进行连接:
DELETE FROM Items I
inner join Projects P on I.ProjectId = P.ProjectId
where P.Active = 1 and I.ProjectID = @ProjId
根据OP的评论和他自己的答案更新。这应该允许项目和项目之间的1到多个关系。项目
答案 1 :(得分:2)
INSERT INTO表(col1,col2,col3,col4)
SELECT table2.col1,ect FROM
table1表INNER JOIN table2 table2 ON table.col1 = table2.col WHERE table2.value => '某物'
答案 2 :(得分:1)
INSERT INTO tableA (col1, col2)
SELECT col1, col2
FROM tableA a INNER JOIN tableB b ON a.itemid= b.itemid
AND b.somevaluecol = 'somevalue'
DELETE FROM tableA a
INNER JOIN tableB b ON a.ItemId = b.ItemId
WHERE b.somevaluecol = 'somevalue'
答案 3 :(得分:0)
if exists(select * from TableA,TableB where TableA.itemID = TableB.itemID and TableB.Col = somevalue)
begin
insert into ....
end
对delete执行相同操作,但将insert语句更改为delete语句
答案 4 :(得分:-1)
以下是我解决它的方法:
IF(SELECT active FROM projects WHERE projectid ='@ projectidval')<> 1 INSERT INTO items(projectid,description)VALUES('@ projectidval','@ descriptionval')