問題描述
這里有兩個我想使用但返回錯誤消息的語句:
Here are two statements that I'd like to work, but which return error messages:
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 中使用了參數化的、準備好的語句.但是,我也嘗試過手動使用數據執行此操作,但確實不起作用.
The question marks are there because I use parametrized, prepared, statements with PHP's PDO. However, I have also tried executing this with data manually, and it really does not work.
雖然我想知道為什么它們每個都不起作用,但如果可以使其起作用,我更愿意使用第一個查詢.
While I'd like to know why each of them doesn't work, I would prefer to use the first query if it can be made to work.
推薦答案
不能在函數的 OUTSIDE 使用 IF 控制塊.所以這會影響您的兩個查詢.
You cannot use IF control block OUTSIDE of functions. So that affects both of your queries.
將 EXISTS 子句轉換為子查詢,而不是在 IF 函數中
Turn the EXISTS clause into a subquery instead within an IF function
SELECT IF( EXISTS(
SELECT *
FROM gdata_calendars
WHERE `group` = ? AND id = ?), 1, 0)
實際上,布爾值返回為 1 或 0
In fact, booleans are returned as 1 or 0
SELECT EXISTS(
SELECT *
FROM gdata_calendars
WHERE `group` = ? AND id = ?)
這篇關于MySQL 的“IF EXISTS"的使用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!