2011-09-04 78 views
1

我的问题是我必须创建一个过程来检查表中是否存在某个值,如果存在,它必须从不同的表中删除一些行。到目前为止,我已尝试使用select count(*) from (the select statement) as numOfRows;命令,但迄今为止我已经在互联网上看到和搜索过,它只返回行数,没有可能进一步使用它。
我真的有兴趣,如果有像这样创造的东西的方式:

if (the value exists in the table) then
-- do whatever it has to be done
检查MySQL表中的值是否存在

任何想法是值得欢迎的! :)

回答

3

记住paramatize语句来避免SQL注入,但下面应该给你一个总体思路。

delete from table_2 
where id = @id 
    and exists (select 1 
        from table_1 
       where id = @id) 
+0

这就是我一直在寻找。最后,命令结束了类似'IF NOT EXISTS(select语句)的东西,然后删除它必须删除的内容并管理其他操作。'非常感谢本,你为我节省了很多工作! – ZLMN

+0

@zalman很高兴你可以使用一些东西! – Ben

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做删除或设置一个值,你可以用它来标记后来删除在你的程序中。

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 [email protected]) 
      BEGIN 
       Delete from tblTwo where [email protected] 
      END 
    END 
COMMIT TRAN 

问候,