2011-09-06 66 views
0

我有一个非常奇怪的情况。我需要在同一个表中的两行之间交换一列值,所以我使用(其中S1S2是两行)使用MySQL交换同一个表中的值

UPDATE table s1, table s2 
SET s1.data = s2.data, s2.data = @temp 
WHERE @temp:=s1.data AND [some expression that works] 
ORDER BY s2.data ASC 
LIMIT 1 

这将产生错误UPDATE和ORDER的不正确的使用BY

我只是想从表中找到最近的一个条目,并将数据输入到原始条目并交换这两个值。这样做

SELECT * FROM table s1, table s2 
WHERE [the same expression that works] 
ORDER BY s2.data ASC 
LIMIT 1 

返回与所需要的结果的表格,但提到UPDATE不起作用。我错了什么?

+0

我相信如果你只能使用'ORDER BY'当且仅当你只修改你的'ORDER BY'中的列所属的表。我知道你实际上只修改一个表,但MySQL可能不会那样看。 – NullUserException

+0

另外为什么你有'LIMIT 1'条款?你不修改至少2行吗? – NullUserException

+0

我刚刚尝试在第一个**命令**之后添加** s1.order ASC **,但没有成功。再次发生同样的错误... –

回答

0

显然我想要的不能在一个MySQL查询中完成。我结束了3个查询,一个SELECT和两个更新为每个列和使用临时变量PHP。我想这也可以在MySQLMySQL临时变量连续查询中完成。

相关问题