Problem z zapytaniem IF (SELECT ... ) UPDATE...

0

Witam

Co może być źle w zapytaniu:

IF ((SELECT COUNT(*)
 FROM posty
 WHERE
 active = '1' AND
 hide = '0' LIMIT 1) < 4) THEN
 UPDATE posty SET hide = '1' WHERE id = '45' LIMIT 1;
 END IF;

Próbuję rozwiązać ten problem co najmniej od kilku godzin i nic. Szukałem w manualu, ale też nic nie pomógł.

Pozdrawiam
Dragas

0

Pokaż komunikat błędu.

0

#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 'IF ((SELECT COUNT(*)
FROM posty
WHERE
active = '1'' at line 1

0

to, że takie zapytane nie przejdzie. Jak już to najpierw musisz pobrać wartość selecta i jak warunek spełniony to wykonać update albo napisać stored proc, która to zrobi albo być może zadziała tak:

UPDATE posty SET hide = '1' WHERE id = '45' and (SELECT COUNT(*) FROM posty WHERE active = '1' AND hide = '0') < 4
0

W ten sposób też próbowałem i dostaję:
#1093 - You can't specify target table 'posty' for update in FROM clause

0

no to zostaje Ci rozbić na dwa osobne zapytania albo napisać stored proc

1 użytkowników online, w tym zalogowanych: 0, gości: 1