mysql - 如何为列创建 id 列

Posted

技术标签:

【中文标题】mysql - 如何为列创建 id 列【英文标题】:mysql - how to create a id column for a column 【发布时间】:2021-10-31 10:09:51 【问题描述】:

我想创建一个有 3 列的表:

    visit_times :为每个特定访问者设置一个唯一 ID visitor_ID 日期

我尝试创建显示此代码的表格

创建表test.table (visit_times INT NOT NULL AUTO_INCREMENT, visitor_ID INT NOT NULL, Date VARCHAR NOT NULL, UNIQUE Unique column (visit_times, @98765) = MyISAM;

但是当我将这些数据存储到表中时

INSERT INTO `tab`(`visitor_ID`, `date`) VALUES ("1", "15/05/2021");
INSERT INTO `tab`(`visitor_ID`, `date`) VALUES ("1", "20/07/2021");
INSERT INTO `tab`(`visitor_ID`, `date`) VALUES ("2", "02/09/2021");
INSERT INTO `tab`(`visitor_ID`, `date`) VALUES ("3", "24/08/2021");

结果会是这样的

visit_times visitor_ID date
1 1 15/05/2021
2 1 20/07/2021
3 2 02/09/2021
4 3 24/08/2021

以及我真正想要的结果

visit_times visitor_ID date
1 1 15/05/2021
2 1 20/07/2021
1 2 02/09/2021
1 3 24/08/2021

服务器版本:8.0.21 - mysql 社区服务器 - GPL

我使用 Wampserver 版本 3.2.3 - 64 位

Apache 版本:2.4.46


感谢您的帮助

【问题讨论】:

根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。 仅供参考,“visiter”的英文拼写为“visitor”。 visit_times 列被定义为 AUTO_INCREMENT,所以您告诉 MySQL 将一个添加到前面的 visit_timesvisit_times 并使用它。您现在无法控制该列,因此要么定义不正确,要么您的逻辑有缺陷。 【参考方案1】:

你可以使用row_number():

select row_number() over (partition by ID_of_visiter order by timecol) as num_of_visit,
       t.*
from t;

【讨论】:

但我希望它作为一个列在 python 中使用它并在 tkinter 的表中显示数据????

以上是关于mysql - 如何为列创建 id 列的主要内容,如果未能解决你的问题,请参考以下文章

如何为不同的分类列创建带有编码的管道?

如何为我的自定义博客帖子创建档案?

如何为 MySQL 中的字段或列设置别名?

如何为用户输入生成的 mySQL 列添加添加安全性?

如何为熊猫中的多个变量按列创建所有组合?

在sql创建数据库表时,如何为字段设一个默认值