如何将具有自动递增值的列添加到 mySql 数据库的表中?
Posted
技术标签:
【中文标题】如何将具有自动递增值的列添加到 mySql 数据库的表中?【英文标题】:How to add a column with auto-incremented values to a table of mySql database? 【发布时间】:2013-09-20 12:37:52 【问题描述】:我有一个结构如下的表-
Col-1 Col-2
(primary)
234 A
154 B
987 B
374 C
983 C
364 C
873 A
我必须在此表中插入一列,例如 Col-3,并根据 Col-2 值从 0 开始自动递增值。对于上表,我希望这些值类似于-
Col-1 Col-2 Col-3
(primary)
234 A 1
154 B 1
987 B 2
374 C 1
983 C 2
364 C 3
873 A 2
表是静态的,所以如果可能的话,我想直接在phpmyadmin中运行查询。
任何帮助将不胜感激,谢谢。
【问题讨论】:
如何找到Col-3
值?
你可以像这里***.com/questions/3162389/multiple-ranks-in-one-table一样设置初始值。添加适当的触发器应该可以解决插入新数据的问题。
【参考方案1】:
您可以使用相关子查询来做到这一点。
SELECT A.Col1,
A.Col2,
(
SELECT COUNT(*)
FROM tableName c
WHERE c.Col2 = a.Col2 AND
c.Col1 <= a.Col1) AS RowNumber
FROM TableName a
ORDER BY a.Col2, RowNumber
SQLFiddle Demo
【讨论】:
非常感谢,这正是我想要的:D。还有一件事,你能告诉我要使用的查询吗,如果我已经在表中有 Col-3 并且需要使用正确的值进行更新。 @491243- 假设我在与Table-1
的Col-1
关联的Table-2
中有Col-2
;什么是查询?提前致谢。
你需要加入它。可以给样本记录吗?
Here are my tables。现在,根据Table-2
中的B_ID
,我想更新Table-1
的DisplayOrder
(两个表都与A_ID
链接)
Err.. 如果234
是1
,那么231
应该是2
;因为两者都有相同的B_ID
。看,显示顺序应该符合B_ID
;希望你明白..【参考方案2】:
这不可能直接按照您的规范进行,并且需要一个触发器,该触发器将使用COUNT(Col-2)
设置 Col-3 的值。我认为这会起作用,但请测试以确保:
CREATE TRIGGER col2_count AFTER INSERT ON your_table
FOR EACH ROW SET col3 = COUNT(1) WHERE col2 = NEW.col2;
【讨论】:
以上是关于如何将具有自动递增值的列添加到 mySql 数据库的表中?的主要内容,如果未能解决你的问题,请参考以下文章