Jag har läst igenom dokumentationen för hur man kan skriva subselectar i MySql, och fattar det som att man inte kan göra en subselect från samma tabell som huvudfrågan, t ex: Men huvva... Plocka INTE ut det största värdet, öka på det och sätt in. Sätt fältet id till en räknare i stället (auto_increment). 4.0.18 För 4.0.21 gäller följande enl mysql.com:subselect och variabler i mySQL
INSERT INTO test (id, namn) VALUES (SELECT MAX(id) + 1 FROM test), 'namn');
Detta funkar inte och det verkar ju alltså stämma enligt dokumentationen. Hur löser jag lämpligast problemet då? Jag provade med en användarvariabel, som också verkar knöliga att använda. Provade först med en syntax som känns naturlig från SQL Server, t ex:
@newId = SELECT MAX(id) + 1 from test;
INSERT INTO test (id, name, rate1, rate2, rate3) VALUES
(@newId, 'namn', 1, 2, 3);
detta funkar inte. Läste då på och kom fram till att det skall se ut något liknande
det här:
SELECT (@newId:=MAX(id) + 1) FROM test;
INSERT INTO test (id, name, rate1, rate2, rate3) VALUES
(@newId, 'namn', 1, 2, 3);
Detta funkar inte heller! Hur fan skall det se ut egentligen!? Vill helst navända en subselect och inga variabler, men i värsta fall så..
mhv
henrik
Sv: subselect och variabler i mySQL
Sv: subselect och variabler i mySQL
Ok kanske skulle använda en räknare i detta fallet, men jag kommer behöva använda subselects senare ändå. Någon som vet?Sv: subselect och variabler i mySQL
Expanded support for subqueries
Subqueries allow you to use the result of one query as a component of a larger query. The MySQL server already supports some forms of this technique, such as INSERT INTO ... SELECT ..., and this support will be expanded in version 4.1 to include nested SELECT queries, which is one of the most-requested features from our users.
Alltså borde det väl iofs funka som du gjort, men andra typer av subselects kräver alltså 4.1