我喜欢这样做:
UPDATE articles
SET live = 1
WHERE aid=3
ORDER BY created DESC
LIMIT 1
最新的文章应该是现场的。这在我的小CMS中经常是必需的。但是此查询返回错误:
#1221 - Incorrect usage of UPDATE and ORDER BY
是否不允许在UPDATE查询中使用ORDER BY或LIMIT?
我用子查询试了一下:
UPDATE articles
SET live=1
WHERE id= (SELECT id FROM articles WHERE aid=3 ORDER BY created DESC LIMIT 1)
但是这也是不允许的......你不能在一个查询中的UPDATE和SELECT查询中使用相同的表......
解决方案是什么?我不想创建TMP表,因为这需要经常进行。是否需要PHP解决方法?
答案 0 :(得分:2)
它只是显而易见,唯一的限制是你只能在更新中使用单个表,而不是多个表(连接等)。请参阅the docs。如果你需要一个多表语句真的很糟糕,你可以使用LEFT JOIN到同一个表,只选择没有更大“创建”值的行,只要你有一个不可为空的列。