2010-07-13 2 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

Нам нужно увидеть остальную часть кода, который вы пытаетесь использовать. –

+1

Это весь запрос? Что делает оператор IF? Должен ли после него быть блок заявления? – David

+0

Да, если это весь запрос - он не работает, потому что это не полный оператор. Если это не так, нам нужно, чтобы остальные судили о том, что происходит. – JAL

ответ

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

Это не имеет значения. 'WHERE id = '1'' будет работать нормально, даже если' id' является целым числом. –

+0

Я согласен с Марк Байерсом - MySQL выполняет неявное преобразование типов данных между INT и строковыми типами данных. –

+0

Спасибо за ваш комментарий, вы правы, я обновил свой пост. –

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' и т. Д. –