检查MySQL表中是否存在值

时间:2011-09-04 18:24:45

标签: mysql stored-procedures

我的问题是我必须创建一个过程,必须检查表中是否存在某个值,如果它确实存在,则必须从另一个表中删除一些行。到目前为止,我已经尝试使用select count(*) from (the select statement) as numOfRows;命令,但到目前为止,我在互联网上看到并搜索它只返回行数,而无法进一步使用它。我有兴趣是否有办法创造这样的东西:

if (the value exists in the table) then
-- do whatever it has to be done

欢迎任何想法! :)

3 个答案:

答案 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

的问候,