2016-09-21 98 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