webForumDet fria alternativet

does not support subquery

Databaser & SQL

11 svar · 624 visningar · startad av pb81

Medlem sedan okt. 200688 inlägg
Frågan#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

Medlem sedan juni 20034 013 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.

Medlem sedan okt. 200688 inlägg
#3

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

Medlem sedan okt. 200688 inlägg
#4

någon? =)

Medlem sedan juni 200032 967 inlägg
#5

Ta't lugnt... :)

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

Medlem 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

Medlem sedan juni 20034 013 inlägg
#7

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

Medlem 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

Medlem sedan dec. 200012 464 inlägg
#9

Flyttas från ASP

Medlem sedan okt. 200688 inlägg
#10

ingen som har någon ide?

Medlem sedan dec. 20003 887 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.

Medlem sedan juni 200032 967 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)
255 ms totalt · 3 externa anrop · v20260731065814-full.265f3fdd
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)