2010-07-13 19 views
2

爲什麼我得到錯誤:SQL語法,如果存在

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS(SELECT id FROM mytable WHERE id = '1')' at line 1 

查詢:

IF EXISTS(SELECT id FROM mytable WHERE id = '1') 

感謝

+0

我們需要看看你正在嘗試使用的代碼的其餘部分。 – 2010-07-13 21:15:00

+1

這是整個查詢嗎? IF聲明做了什麼?在它之後不應該有一個聲明塊? – David 2010-07-13 21:15:50

+0

是的,如果這是整個查詢 - 它不起作用,因爲它不是一個完整的語句。如果不是,我們需要其餘的來判斷髮生了什麼。 – JAL 2010-07-13 21:17:59

回答

6

IF EXISTS只在存儲過程中起作用。在存儲過程之外,IF()是一個需要3個參數的函數。正確的用法是

SELECT IF(EXISTS(SELECT `column` FROM `table` WHERE `id` = `1`), 1, 0); 
0

嘗試使用

Declare @ID Integer 
Select @ID=id From mytable where id=1 
IF @ID is not null OR IF @ID > 0 
Begin 
.... 
End 
+1

這應該不重要。即使'id'是一個整數,WHERE id ='1''也能正常工作。 – 2010-07-13 21:20:37

+0

我同意Mark Byers - MySQL在INT和字符串數據類型之間進行隱式數據類型轉換。 – 2010-07-13 21:37:43

+0

感謝您的評論,你是對的,我已經更新了我的文章。 – 2010-07-13 21:49:10

0

不是在MySQL的機器右側現在看起來像它,因爲這個陳述是不合適的lete,如果id存在,你需要告訴它該怎麼做。

IF EXISTS(...)做點什麼

0

IF EXISTS不作在MySQL任何意義。 請參閱subqueries with EXISTS or NOT EXISTS在MySQL文檔中的使用。

基本上,你需要在一份聲明中使用它,而不是就像一個邏輯塊

+1

IF EXISTS經常用在SQL Server中,因爲它不如IF(SELECT COUNT()...)> 0等冗長 – 2010-07-13 21:36:58