【问题标题】:MySQL query to randomise rows and then autoincrement a columnMySQL查询随机化行然后自动增加一列
【发布时间】:2013-10-26 12:38:11
【问题描述】:

我正在尝试进行随机化 id 顺序的查询并将它们放入临时 id 列中,但仅限于将状态列标记为“2”的地方

表格的开头是这样的:

id       tempid     status
1     |    -1    |    2
2     |    -1    |    2
3     |    -1    |    2
4     |    -1    |    2
5     |    -1    |    2
6     |    -1    |    2
7     |    -1    |    1
8     |    -1    |    1
9     |    -1    |    2

然后在查询之后它会做这样的事情:

id       tempid     status
1     |    2     |    2
2     |    9     |    2
3     |    1     |    2
4     |    5     |    2
5     |    3     |    2
6     |    4     |    2
7     |    -1    |    1
8     |    -1    |    1
9     |    6     |    2

任何帮助将不胜感激:D

【问题讨论】:

  • 你到底想做什么,为什么?

标签: mysql random row


【解决方案1】:

这行得通:

SET @newTempID=0;
UPDATE ttable 
LEFT JOIN 
  (SELECT id, @newTempId:=@newTempId+1 AS tempid ,status
   FROM 
     (SELECT id,status FROM ttable WHERE status=2 ORDER BY RAND()) t 
  ) t2 ON ttable.id=t2.id 
SET ttable.tempid=t2.tempid WHERE ttable.status=2;

它看起来很糟糕,因为现在是早上 6 点,我还没有睡觉,但我测试了它并且它有效。请注意,您必须运行这两个查询才能使其工作。如果这确实解决了您的问题,请标记为已解决。

【讨论】:

  • 把我的表名放进去后,把最后一行的 ttable.st=2 更改为 ttable.status=2 并把 ' 放在所有状态列周围,效果很好。忘了这是保留的word.. :S 非常感谢您的快速回复!
猜你喜欢
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 2012-11-23
相关资源
最近更新 更多