Ik ben de weg kwijt. Ik probeer iets te doen in MySQL wat andere resultaten geeft dan ik zou verwachten, en ik snap niet waarom
Gegeven de volgende tabel:
En de volgende query om uit te voeren (het zijn twee queries die in één keer worden uitgevoerd):
Geeft dit als resultaat:
Hoe kan daar nu een rij uitkomen met id=1 (die door de eerste query is toegevoegd)? In de query geeft ik toch op id IS NULL? Als ik daarna de SELECT query nog een keer uitvoer komt er geen resultaat:
Een selectie op name geeft daarentegen geen resultaten (zoals ik zou verwachten):
Waarom geeft MySQL de zojuist toegevoegde rij terug als ik een record opvraag waarvan de PK gelijk is aan NULL
Gegeven de volgende tabel:
SQL:
1
2
3
4
| CREATE TABLE `test` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM ; |
En de volgende query om uit te voeren (het zijn twee queries die in één keer worden uitgevoerd):
SQL:
1
2
| INSERT INTO `test` (`name`) VALUES ('dummy'); SELECT `id`, `name` FROM test WHERE `id` IS NULL; |
Geeft dit als resultaat:
code:
1
2
3
4
5
6
7
8
9
| mysql> INSERT INTO `test` (`name`) VALUES ('dummy'); SELECT `id`, `name` FROM test WHERE `id` IS NULL; Query OK, 1 row affected (0.00 sec) +----+-------+ | id | name | +----+-------+ | 1 | dummy | +----+-------+ 1 row in set (0.00 sec) |
Hoe kan daar nu een rij uitkomen met id=1 (die door de eerste query is toegevoegd)? In de query geeft ik toch op id IS NULL? Als ik daarna de SELECT query nog een keer uitvoer komt er geen resultaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| mysql> INSERT INTO `test` (`name`) VALUES ('dummy'); Query OK, 1 row affected (0.03 sec) mysql> SELECT `id`, `name` FROM test WHERE `id` IS NULL; +----+-------+ | id | name | +----+-------+ | 2 | dummy | +----+-------+ 1 row in set (0.00 sec) mysql> SELECT `id`, `name` FROM test WHERE `id` IS NULL; Empty set (0.00 sec) |
Een selectie op name geeft daarentegen geen resultaten (zoals ik zou verwachten):
code:
1
2
3
4
| mysql> INSERT INTO `test` (`name`) VALUES ('dummy'); SELECT `id`, `name` FROM test WHERE `name` IS NULL; Query OK, 1 row affected (0.00 sec) Empty set (0.01 sec) |
Waarom geeft MySQL de zojuist toegevoegde rij terug als ik een record opvraag waarvan de PK gelijk is aan NULL
"If you see a light at the end of a wormhole, it's probably a photon torpedo!"