2011-09-04 31 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 

問候,