我在SQL中有一个EAV表,通常每个ID都有几个记录。这些记录中的每一个都在名为“weight”的列中具有数值,并且我正在尝试对此表进行排序,以便对于每个ID,记录按权重的降序排列。这将是一个一次性的过程,因为我打算确保数据在将来进入表时进行排序。
对于SELECT
所有数据执行此类操作的正常协议,按您希望的方式对其进行排序,然后使用REPLACE
命令替换表中的旧数据?
我知道我可以通过以下方式为一个id执行此操作:
SELECT * FROM my_table WHERE id = 'X' ORDER BY weight DESC
但我需要以某种方式为我表中的每个id执行此操作。这通常是怎么做的?
答案 0 :(得分:1)
在这种情况下,您将始终按照您希望的顺序返回数据:
SELECT * from theTable order by id, weight desc
您不以任何特定顺序存储数据。 (即使你尝试这不重要)。
答案 1 :(得分:0)
删除WHERE
子句并将id
添加到ORDER BY
。这样,您的结果集将首先由id
订购,对于每个id
,它将按weight
排序。
SELECT * FROM my_table ORDER BY id, weight DESC