2016-09-21 101 views
1

你好,我是新來的MySQL和PHP和只是想知道,如果這是MySQL查詢是有效的:ELSE IF語句可能嗎?

IF (NOT EXISTS(SELECT uid2 FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid2 = $var 
END 
ELSE 
IF (NOT EXISTS(SELECT uid3 FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid3 = $var 
END 

我試圖插入$ VAR到我的表,但僅當有對UID2和UID3沒有價值。希望這是有道理的我已經得到了很多選票下來,不知道爲什麼:/

+0

更新您的問題與一些實際的數據和所需的輸出,以獲得更好的結果。 –

+0

該代碼不是php –

+0

您是否詢問ELSE IF條件是否在mysql中使用,是您的問題嗎? –

回答

2

我想你可以將此縮減爲一個單獨的查詢,而無需使用IF

UPDATE table 
SET uid2 = $var, 
    uid3 = $var 
WHERE NOT EXISTS (SELECT * FROM table WHERE uid1 = '$uid1') 

您的兩個NOT EXISTS就我所知,條件在邏輯上是相同的。

+0

不,他們不是。有兩列,uid2和uid3。我想插入到uid2如果還沒有一個值或uid3如果有一個在uid2 – Jimbu

+0

@Jimbu我想你可能會對'EXSTS'如何工作感到困惑。如果存在任何_record_(不是記錄中的列),它將返回true WHERE uid ='$ uid1''。所以你在'EXISTS'子句中選擇的列應該沒有關係。 –

0

當我們在mysql中使用EXISTS或NOT EXISTS語句時,子查詢總是以select *語句開始,如下所示。

NOT EXISTS(SELECT * FROM table WHERE uid1 = '$uid1') 

試試吧。

IF (NOT EXISTS(SELECT * FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid2 = $var 
END 
ELSE 
IF (NOT EXISTS(SELECT * FROM table WHERE uid1 = '$uid1')) 
BEGIN 
    UPDATE table 
    SET uid3 = $var 
END