2013-02-19 8 views
5

W tym zapytaniu chcę zaktualizować te rekordy, które jest ostatnio wysłana.Ale moje zapytanie nie działa proszę mi pomóc, jaki jest powód ???Dlaczego zaktualizować i wybrać oba nie działa z tej samej tabeli

Błąd: - Nie można określić docelowe tabeli „beevers_products” dla aktualizacji w klauzuli FROM

update beevers_products set product_name='my_product_name' where posted_date in (SELECT posted_date FROM `beevers_products` order by posted_date asc limit 1) 
+0

W MySQL, nie można modyfikować tę samą tabelę, która użyć w SELECT części. Sprawdź ten link. http://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-update-in-f-cossuse – cartina

+0

Czy możesz wyjaśnić, co chcesz zrobić? To zapytanie wydaje się być logicznym bitem – Shaolin

Odpowiedz

0

Spróbuj tego:

update beevers_products as t1, 
(select posted_date from beevers_products order by posted_date asc limit 1) as t2 
set t1.product_name = 'my_product_name' 
where t1.posted_date in (t2.posted_date); 

Trzeba będzie podać alias do rekordu chcesz i używać go w klauzuli WHERE.

+0

I wana update product_name, która jest ostatnio dodana przez pojedyncze zapytanie to zapytanie (SELECT posted_date FROM 'beevers_products' order wg posted_date asc limit 1) jest mi dana najnowsza data dodania, a teraz i wana aktualizuję ten produkt .... Obie kwerendy działają osobno dobrze, ale łączą jej nie działa ??? –

+0

To właśnie mówię. Będzie działać dobrze, gdy będą używane osobno, ale gdy zostaną użyte razem, to nie zadziała. To jest po prostu niedozwolone. –

+0

Mam zaktualizowaną moją odpowiedź. Spróbuj. Testowałem i działałem. –

0
INSERT INTO beevers_products (id, product_name) 
SELECT id, 'my_product_name' 
FROM beevers_products 
ORDER BY posted_date ASC 
LIMIT 1 
ON DUPLICATE KEY UPDATE product_name = VALUES(product_name) 

Kiedyś nauczył się wykorzystywać INSERT ... SELECT ... ON DUPLICATE tak wiele możliwości wynurzony. Jestem ciekawa, kiedy tylko chcesz posted_data ASC lub posted_data DESC.

1

Sprawdź to:

UPDATE beevers_products 
SET product_name = 'my_product_name' 
WHERE posted_date = (SELECT posted_date 
        FROM beevers_products 
        ORDER BY posted_date DESC limit 1) 
Powiązane problemy