mysql - MySQL的 "IF EXISTS"的用法

标签 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 中使用了参数化、准备好的语句。不过,我也尝试过手动使用数据执行此操作,但确实不起作用。

虽然我想知道为什么它们都不起作用,但如果可以使其起作用,我更愿意使用第一个查询。

最佳答案

不能在函数外部使用 IF 控制 block 。因此这会影响您的两个查询。

将 EXISTS 子句转换为子查询,而不是在 IF 函数中

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

事实上, bool 值返回为 1 或 0

SELECT EXISTS(
         SELECT *
         FROM gdata_calendars
         WHERE `group` =  ? AND id = ?)

关于mysql - MySQL的 "IF EXISTS"的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39045401/

相关文章:

php - MYSQL、PHP : INSERT INTO table2 from table 1 only if the project ID is not in second table

php - 在mysql中选择两个独立的表

mysql - MySQL WHERE 子查询排除数据的子查询

php - CakePHP:创建新的 HABTM 行而不是更新其他行

java - 字符编码 JDBC MySQL

Docker 中的 MySQL 在 root 密码配置中卡住

mysql - 使用 MySQL SELECT 将第一个字母更改为大写

mysql - 用这种方式不存在的数据扩展结果

mysql - 无法用mysql建表

php - MySQL - 如何使用(LEFT)JOIN 通过一个表将两个表连接在一起?