这是我想要工作的两个语句,但它们返回错误消息:
IF EXISTS (SELECT * FROM gdata_calendars WHERE `group` = ? AND id = ?) SELECT 1 ELSE SELECT 0
Run Code Online (Sandbox Code Playgroud)
和
IF ((SELECT COUNT(*) FROM gdata_calendars WHERE `group` = ? AND id = ?) > 0) SELECT 1 ELSE SELECT 0;
Run Code Online (Sandbox Code Playgroud)
问号是存在的,因为我使用PHP的PDO参数化,准备好的语句.但是,我也尝试手动执行此操作,但它确实无效.
虽然我想知道为什么每个都不起作用,但我更愿意使用第一个查询,如果它可以工作.
Ric*_*iwi 113
您不能使用IF控制块OUTSIDE功能.这会影响您的两个查询.
将EXISTS子句转换为子查询,而不是IF函数
SELECT IF( EXISTS(
SELECT *
FROM gdata_calendars
WHERE `group` = ? AND id = ?), 1, 0)
Run Code Online (Sandbox Code Playgroud)
事实上,布尔值返回为1或0
SELECT EXISTS(
SELECT *
FROM gdata_calendars
WHERE `group` = ? AND id = ?)
Run Code Online (Sandbox Code Playgroud)
小智 30
我发现RichardTheKiwi的例子非常有用.
如果你正在寻找类似的东西,只是提供另一种方法 IF EXISTS (SELECT 1 ..) THEN ...
- 我可能会在MSSQL中写些什么
IF EXISTS (SELECT 1 FROM Table WHERE FieldValue='')
BEGIN
SELECT TableID FROM Table WHERE FieldValue=''
END
ELSE
BEGIN
INSERT INTO TABLE(FieldValue) VALUES('')
SELECT SCOPE_IDENTITY() AS TableID
END
Run Code Online (Sandbox Code Playgroud)
- 为MySQL重写
IF (SELECT 1 = 1 FROM Table WHERE FieldValue='') THEN
BEGIN
SELECT TableID FROM Table WHERE FieldValue='';
END;
ELSE
BEGIN
INSERT INTO Table (FieldValue) VALUES('');
SELECT LAST_INSERT_ID() AS TableID;
END;
END IF;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
261943 次 |
| 最近记录: |