亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL的“如果存在”的用法

MySQL的“如果存在”的用法

SMILET 2019-07-13 14:40:59
下面是我想要處理的兩條語句,但它們返回錯誤消息: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參數化、準備好的語句。但是,我也嘗試過手動執行這些數據,但它實際上不起作用。雖然我想知道為什么每個查詢都不能工作,但我更愿意使用第一個查詢(如果可以的話)。
查看完整描述

3 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

不能在函數之外使用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 = ?)


查看完整回答
反對 回復 2019-07-13
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

我找到了這個例子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;


查看完整回答
反對 回復 2019-07-13
  • 3 回答
  • 0 關注
  • 1129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號