我的问题是我必须创建一个过程,必须检查表中是否存在某个值,如果它确实存在,则必须从另一个表中删除一些行。到目前为止,我已经尝试使用select count(*) from (the select statement) as numOfRows;
命令,但到目前为止,我在互联网上看到并搜索它只返回行数,而无法进一步使用它。我有兴趣是否有办法创造这样的东西:
if (the value exists in the table) then
-- do whatever it has to be done
欢迎任何想法! :)
答案 0 :(得分:3)
请记住对语句进行语法表达以避免SQL注入,但以下内容应该为您提供一般性的想法。
delete from table_2
where id = @id
and exists ( select 1
from table_1
where id = @id )
答案 1 :(得分:0)
MySQL的语法是:
SELECT IF(count(<field_in_question>), <do_this_if_true>, <do_this_if_false>)
FROM <your_table>
WHERE field_in_question='<some_value>'
您应该能够选择计数,如果它大于0,请执行删除操作或设置一个值,以便稍后在您的程序中标记删除。
答案 2 :(得分:0)
我遇到了同样的问题,我解决了这个问题(这不是最奇特的方式,但它有效):
declare @InList int=0;
select @InList =count(*) FROM tblOne where fieldOne = @ValueOne
BEGIN TRAN
IF @InList > 0
BEGIN
IF EXISTS (SELECT * FROM tblTwo WHERE fieldTwo=@valueTwo)
BEGIN
Delete from tblTwo where fieldTwo=@valueTwo
END
END
COMMIT TRAN
的问候,