"INSERT INTO vote (ip, date) VALUES ($REMOTE_ADDR, NOW())"
Если я захочу проапдейтить одну колонку то надо писать так
"INSERT INTO vote (ip) VALUES ($REMOTE_ADDR)"
Да?
Вообще-то так вставиться значение тока в 1 колонку, остальные колонки выставят значения по дефолту.
Для апдейта нужно юзать UPDATE ... SET ... [WHERE ...]
Есть вопросы:
1. Select * from test where not id=4
что выведет?
У меня выводит все записи у которых ид не 4, в книги же написано что ничего не должно выводить так как сервер райэсйьюэл оценивает выражение нот ид а затем проверяет соответствует ли оно 4,поскольку ид всегда не 0 то нот ид всегда равно 0 и не равно 4,следовательно бд ниче не выдаст. Я хз ваще! Мозг взорвался. У меня результат с ид 1,2,3,5,6 а у них пустой! И с нот ваще пипец! В книге одно у меня другое. У мну версия 5.0.45.
ибо здесь двоякая ситуация => разные версия мускуля по разному реагируют
Код:
NOT, !
Logical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is non-zero, and NOT NULL returns NULL.
т.е.
Код:
mysql> SELECT * FROM test;
+----+----------+
| id | num |
+----+----------+
| 1 | 148 |
| 2 | 68767867 |
+----+----------+
2 rows in set (0.00 sec)
Код:
mysql> SELECT * FROM test WHERE NOT(id)=null;
Empty set (0.00 sec)
mysql> SELECT * FROM test WHERE !(id)=null;
Empty set (0.00 sec)
Код:
mysql> SELECT * FROM test WHERE NOT(id)=false;
+----+----------+
| id | num |
+----+----------+
| 1 | 148 |
| 2 | 68767867 |
+----+----------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM test WHERE !(id)=false;
+----+----------+
| id | num |
+----+----------+
| 1 | 148 |
| 2 | 68767867 |
+----+----------+
2 rows in set (0.00 sec)
Код:
mysql> SELECT * FROM test WHERE NOT(id)=true;
+----+----------+
| id | num |
+----+----------+
| 2 | 68767867 |
+----+----------+
1 row in set (0.00 sec)
mysql> SELECT * FROM test WHERE !(id)=true
Empty set (0.00 sec)
Вывод:
WHERE NOT id=2 интерпретируется как id!=2
WHERE ! id=2 интерпретируется как !(id=2)
p.s. моя версия - 5.1.35
Последний раз редактировалось FireFenix; 27.07.2009 в 18:09..