MySQL语法WHERE子句

时间:2013-01-02 22:52:07

标签: mysql sql phpmyadmin

我正在尝试更新我的表http://i.imgur.com/XTlAv.png

中的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();

查询正在运行,但没有更新行。

出了什么问题?

我正在使用phpMyAdmin。

3 个答案:

答案 0 :(得分:8)

我会更改您的查询以使用AND而不是&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

答案 1 :(得分:3)

请勿使用&,而是使用AND

 WHERE name = "MCYasman" AND unbanned_by IS NULL AND until > now();

答案 2 :(得分:0)

您需要更改unbanned_by检查以使用"为空"而不是" = NULL"。像这样。

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)