以下是我想要执行的两个语句,但它们返回错误消息:
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/