5

在这个查询中,我想更新那些最新发布的记录。但是我的这个查询不起作用请帮助我这是什么原因???

错误:--您不能在 FROM 子句中指定目标表 'beevers_products' 进行更新

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)
4

5 回答 5

1

检查这个:

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)
于 2013-06-06T14:18:42.790 回答
0

推荐使用 CI Active Record 类进行查询。

http://ellislab.com/codeigniter/user-guide/database/active_record.html

于 2013-02-19T10:10:42.753 回答
0

尝试这个:

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);

您必须为所需的记录提供别名并在 where 子句中使用它。

于 2013-02-19T10:14:28.173 回答
0

尝试这个

UPDATE beevers_products 
SET product_name = 'my_product_name'  
OUTPUT DELETED.product_name
WHERE posted_date in (SELECT posted_date 
                      FROM `beevers_products` 
                      order by posted_date asc 
                      limit 1)

阅读有关输出的更多信息

检查这个 -->我可以在一个查询中更新/选择表吗?
可能对你有帮助

于 2013-02-19T10:15:03.663 回答
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)

一旦我学会使用INSERT ... SELECT ... ON DUPLICATE这么多的可能性浮出水面。我只是有点好奇,无论何时你想要posted_data ASCposted_data DESC

于 2013-02-19T11:33:04.237 回答