2016-09-21 7 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の値がない場合にのみ、 。私はあなたがIFを使用せずに単一のクエリにこれを減らすことができると思います/

+0

質問をより良い結果を得るためには、実際のデータと希望する結果で更新してください。 –

+0

コードはPHPではありません –

+0

mysqlでELSE IF条件が使用されているかどうか聞いていますか? –

答えて

2

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

あなたの2 NOT EXISTSうまくいけば、これは私がダウン票の多くを取得してきたし、理由を知らない理にかなっています条件は論理的には私が知る限り同じです。

+0

いいえ、そうではありません。 uid2とuid3の2つの列があります。私はuid2に値がない場合はuid2に挿入したい、またはuid2にuid3がある場合は挿入する – Jimbu

+0

@Jimbu 'EXSTS'の仕組みについて混乱するかもしれないと思う。 _record_(レコード内のカラムではない)がWHERE uid = '$ uid1'であればtrueを返します。したがって、 '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 
関連する問題