我有一张table叫 test
带字段 name
, sequence_no
, id1
以及 id2
(最后两个是外键)。当我插入一条新记录时,我想检查表中有多少个条目是相同的 id1
以及 id2
作为我要添加的条目,那么我想使用count+1作为sequence\u no字段。换句话说,我想记录我做了多少次测试,这是由两个id标识的。
我试着做一个简单的 sequence_no = (select count(*)+1 from test where id1=newid1 and id2=newid2)
在我的insert中,但是我想我不能从我要插入的表中选择表单。
关于如何在单个查询中实现这一点,有什么想法吗?我觉得我应该用在复制品上,但我不知道该怎么做。
1条答案
按热度按时间a14dhokn1#
如果不想创建具有相同
(id1, id2)
,但增量sequence_no
在现有行上,则可以使用on duplicate key
:这需要在上设置唯一键(或主键约束)
(id1, id2)
.另一方面,如果您想要一些递增计数器来指示同一id元组被满足的次数,那么它是不同的。我不建议将这些信息存储在表中,您可以在查询中动态计算这些信息,通常使用window函数
row_number()
(mysql 8.0提供)。为了使这一点有意义,您需要一个列来定义列的顺序(例如ordering_id
),则可以执行以下操作: