Autor | Zpráva | ||
---|---|---|---|
maks Profil |
#1 · Zasláno: 28. 5. 2009, 21:16:27 · Upravil/a: maks
Ahoj,
potřeboval bych dát do jednoho dotazu delete záznamu a současně update jiného. Mým cílem je smazat záznam, kde je id=10 a zároveň u nejnižšího id, které je v databázi (nemusí to být nutně 1) změnit hodnotu v jiném sloupci. Mám to zapsané takhle, ale zápis (se sloupcem name pouze ilustrativní) je chybný: $sql = "DELETE FROM table WHERE id = 10; UPDATE table SET name = 'jmeno' WHERE id = (SELECT MIN(id))"; mysql_query($sql); chyba: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; UPDATE table SET name = 'jmeno' WHERE id = (SELECT MIN(id))' jako spojovník jsem zkoušel volit 'středník', 'čárku' i 'and', ale nic nezabralo. Děkuji za pomoc, je to spíše začátečnický dotaz. :-) |
||
Alphard Profil |
#2 · Zasláno: 28. 5. 2009, 21:56:45
Nelze, mysql_query() z bezpečnostních důvodů nedovolí spojit další příkaz přes ; ani nic jiného.
Umí to mysqli::multi_query. |
||
maks Profil |
#3 · Zasláno: 28. 5. 2009, 23:07:44 · Upravil/a: maks
Alphard
vypadá to, že by to mohlo pomoci, nicméně je tam ještě pravděpodobně chyba v té druhé podmínce - žádná změna se neprovádí. Jedná se tedy o tenhle kosíček: "... WHERE id = (SELECT MIN(id))"; |
||
TomášK Profil |
#4 · Zasláno: 28. 5. 2009, 23:23:24
SELECT MIN(id) FROM table |
||
maks Profil |
#5 · Zasláno: 29. 5. 2009, 07:26:02 · Upravil/a: maks
TomášK
„SELECT MIN(id) FROM table“ to jsem taky zkoušel.. Když jsem zkusil pouze tu druhou část dotazu, samotná stále nefunguje tak, jak má.. mysql_query ("UPDATE table SET name = 'jmeno' WHERE id = (SELECT MIN(id) from table)"); Ještě doplním, že chyba musí být v tom konci, s konkrténím číslem to totiž funguje. Samotný dotaz "SELECT MIN(id) FROM table" mi rovněž vyhodí správný výsledek, nejnžší ID z databáze, ale s tím updatem dohromady nic. Děkuji |
||
Mastodont Profil |
#6 · Zasláno: 29. 5. 2009, 07:58:03
Buď přes pomocnou tabulku nebo napsat storku.
|
||
Kajman_ Profil * |
#7 · Zasláno: 29. 5. 2009, 09:41:45
Pokud je id jedinečné, tak stačí
UPDATE table SET name = 'jmeno' order by id limit 1 |
||
Časová prodleva: 15 let
|
0