MySQL的“如果存在”的用法

下面是我想要处理的两条语句,但它们返回错误消息:

IF EXISTS (SELECT * FROM gdata_calendars WHERE `group` =  ? AND id = ?) SELECT 1 ELSE SELECT 0

IF ((SELECT COUNT(*) FROM gdata_calendars WHERE `group` =  ? AND id = ?) > 0)  SELECT 1 ELSE SELECT 0;

问号是存在的,因为我使用PHP的PDO参数化、准备好的语句。但是,我也尝试过手动执行这些数据,但它实际上不起作用。

虽然我想知道为什么每个查询都不能工作,但我更愿意使用第一个查询(如果可以的话)。


SMILET
浏览 1105回答 3
3回答

白衣染霜花

不能在函数之外使用if控制块。因此,这会影响您的两个查询。将EXISTS子句转换为IF函数中的子查询SELECT IF( EXISTS(              SELECT *              FROM gdata_calendars             WHERE `group` =  ? AND id = ?), 1, 0)事实上,布尔人返回为1或0。SELECT EXISTS(          SELECT *          FROM gdata_calendars         WHERE `group` =  ? AND id = ?)

慕容708150

我找到了这个例子RichardTheKiwi信息丰富。只是为了提供另一种方法,如果你想要的是IF EXISTS (SELECT 1 ..) THEN ...-我用MSSQL写的东西IF EXISTS (SELECT 1 FROM Table WHERE FieldValue='')BEGIN     SELECT TableID FROM Table WHERE FieldValue=''ENDELSEBEGIN     INSERT INTO TABLE(FieldValue) VALUES('')     SELECT SCOPE_IDENTITY() AS TableIDEND-为MySQL重写IF (SELECT 1 = 1 FROM Table WHERE FieldValue='') THENBEGIN     SELECT TableID FROM Table WHERE FieldValue='';END;ELSEBEGIN     INSERT INTO Table (FieldValue) VALUES('');     SELECT LAST_INSERT_ID() AS TableID;END;END IF;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL