"If exists" 的 SQL 语法

4

为什么我会遇到这个错误:

#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 

我的SQL查询:

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

谢谢。

我们需要看到您尝试使用的其余代码。 - OMG Ponies
1
这是整个查询吗?IF语句在做什么?它后面不应该有一个语句块吗? - David
是的,如果这就是整个查询 - 它不起作用,因为它不是完整的语句。如果不是,我们需要其余部分来判断发生了什么。 - JAL
4个回答

8

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'”也能正常工作。 - Mark Byers
我同意Mark Byers的观点 - MySQL会在INT和字符串数据类型之间进行隐式数据类型转换。 - OMG Ponies

0

我现在不在MySQL机器上,但看起来是因为语句不完整,你需要告诉它如果ID存在应该做什么。

如果存在(...)做某事


0

IF EXISTS 在 MySQL 中没有任何意义。 请参阅 MySQL 文档中关于使用 EXISTS 或 NOT EXISTS 子查询 的内容。

基本上,您需要在语句中使用它,而不仅仅是像逻辑块一样使用。


1
IF EXISTS 在 SQL Server 中经常被使用,因为它比 IF(SELECT COUNT()...) > 0 等语句更简洁。 - OMG Ponies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接