我是一个非常缺乏经验的SQL用户。我从来没有真正使用SQL来自动填充列。主要是SELECTS(JOINS等)。
我有一个表格,我想将值填入article_order列,以便为每个id_issue订购id_article。
我在-package
上有这个例子+------------------------+----------+------------+---------------+
| id_issue_article_issue | id_issue | id_article | article_order |
+------------------------+----------+------------+---------------+
| 1 | 1 | 1 | NULL |
| 2 | 1 | 2 | NULL |
| 3 | 2 | 3 | NULL |
| 4 | 2 | 4 | NULL |
| 5 | 2 | 5 | NULL |
+------------------------+----------+------------+---------------+
Desired table
+------------------------+----------+------------+---------------+
| id_issue_article_issue | id_issue | id_article | article_order |
+------------------------+----------+------------+---------------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
| 3 | 2 | 3 | 1 |
| 4 | 2 | 4 | 2 |
| 5 | 2 | 5 | 3 |
+------------------------+----------+------------+---------------+
我正在寻找一些解决方案,我可能错过了一些东西,但我仍然无法理解。 即使提示也会有所帮助。 非常感谢!
答案 0 :(得分:0)
这在MySQL中有点棘手,但您可以使用变量来实现:
set @rn := 0;
set @ai := -1;
update t
set article_order = if(@ai = id_issue, @rn := @rn + 1,
if(@ai := id_issue, @rn := 1, @rn := 1
)
)
order by id_issue, id_article;