1

row 3(id=8)ここでテーブルを更新しようとしています

次のクエリを使用します。

UPDATE player_ban 
   SET until = Now(), 
       unbanned_by = "MrSnare", 
       unbanned_reason = "test", 
       unbanned_date = Now() 
 WHERE name = "MCYasman" 
     & unbanned_by = NULL 
     & until > NOW();

クエリは実行されていますが、更新されている行はありません。

何がうまくいかないのですか?

4

3 に答える 3

8

andANDの代わりに使用するようにクエリを変更します。したがって、クエリは次のようになります。&unbanned_by IS NULL

UPDATE player_ban 
SET until = Now(), 
    unbanned_by = "MrSnare", 
    unbanned_reason = "test", 
    unbanned_date = Now() 
WHERE name = "MCYasman" 
  AND unbanned_by IS NULL 
  AND until > now();

値が になることはありません。= null使用する必要がありますIS NULL

于 2013-01-02T22:56:00.970 に答える
3

使用しないでください。代わり&に使用してくださいAND

 WHERE name = "MCYasman" AND unbanned_by IS NULL AND until > now();
于 2013-01-02T22:56:26.050 に答える
0

「= NULL」の代わりに「is null」を使用するように unbanned_by チェックを変更する必要があります。そのようです。

UPDATE player_ban SET until = Now(), unbanned_by = "MrSnare", unbanned_reason = "test", unbanned_date = Now() WHERE name = "MCYasman" & unbanned_by is NULL & until > now();

SQL では、NULL はそれ自体と等しくありません。

> select null = null, null is null, null is not null;
+-------------+--------------+------------------+
| null = null | null is null | null is not null |
+-------------+--------------+------------------+
|        NULL |            1 |                0 |
+-------------+--------------+------------------+
1 row in set (0.00 sec)
于 2013-01-02T22:57:15.177 に答える