pb81Medlem sedan okt. 200688 inlägg
Hallå igen!
Vad är det som gör att MySQL inte klarar av subquery?
SQL2 = "DELETE FROM graffiti WHERE g_id NOT IN (SELECT g_id FROM graffiti ORDER BY g_id DESC LIMIT 20)"
connect.execute(SQL2)
Tänkte köra en sådan kod men det vill sig inte riktigt
Mvh // Paul
tydalMedlem sedan juni 20033 788 inlägg
pb81 skrev:
Vad är det som gör att MySQL inte klarar av subquery?
Versionen. Det finns från och med 4.1.
pb81Medlem sedan okt. 200688 inlägg
Men det är den senaste versionen som jag använder
pb81Medlem sedan okt. 200688 inlägg
@ndersMedlem sedan juni 200026 914 inlägg
Ta't lugnt... :)
Standardsvar: på vilket sätt fungerar det inte? Felmeddelande?
pb81Medlem sedan okt. 200688 inlägg
Microsoft OLE DB Provider for ODBC Drivers error '80040e31'
[MySQL][ODBC 3.51 Driver][mysqld-4.1.20-log]This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Får det felmeddelandet på koden nämnd ovan
tydalMedlem sedan juni 20033 788 inlägg
Det står i felmeddelandet att du har version 4.1.20. Version 5 har kommit.
pb81Medlem sedan okt. 200688 inlägg
Microsoft OLE DB Provider for ODBC Drivers error '80040e31'
[MySQL][ODBC 3.51 Driver][mysqld-5.0.24a-standard-log]This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Får fortfarande samma fel fast jag har version 5
LarsGMedlem sedan dec. 200012 465 inlägg
pb81Medlem sedan okt. 200688 inlägg
Engine^Medlem sedan dec. 20002 861 inlägg
pb81 skrev:
[MySQL][ODBC 3.51 Driver][mysqld-5.0.24a-standard-log]This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Det står ju klart och tydligt att LIMIT inte stöds än i kombination med IN-subquery.
@ndersMedlem sedan juni 200026 914 inlägg
... så ett alternativ är ju att först hämta ut de 20 man vill behålla, bygga upp en kommaseparerad sträng, och sedan använda den i sin DELETE-fråga, så den ser ut typ så här:
SQL2 = "DELETE FROM graffiti WHERE g_id NOT IN (4711, 8822, 3049, 394, 3434, [...])"
connect.execute(SQL2)