webForumDet fria alternativet

does not support subquery

11 svar · 624 visningar · startad av pb81

pb81Medlem sedan okt. 200688 inlägg
#1

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
#2

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
#3

Men det är den senaste versionen som jag använder

pb81Medlem sedan okt. 200688 inlägg
#4

någon? =)

@ndersMedlem sedan juni 200026 914 inlägg
#5

Ta't lugnt... :)

Standardsvar: på vilket sätt fungerar det inte? Felmeddelande?

pb81Medlem sedan okt. 200688 inlägg
#6

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
#7

Det står i felmeddelandet att du har version 4.1.20. Version 5 har kommit.

pb81Medlem sedan okt. 200688 inlägg
#8

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
#9

Flyttas från ASP

pb81Medlem sedan okt. 200688 inlägg
#10

ingen som har någon ide?

Engine^Medlem sedan dec. 20002 861 inlägg
#11

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
#12

... 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)
Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb