是否有方法判断lead_id是否在表中多次出现,如果是,则从查询中排除?原因是,我只想在状态_id=1,并且找不到该lead _id的其他状态_id/行时添加新行.
数据库的设计方式是,每次状态更新都会创建一个新行.所以旧的行有一个旧的时间戳,并保留在DB表中,这些将显示在前端的状态历史组件中.但由于它是这样设计的,我不能简单地说:给每个状态为1的用户一个新的状态更新.因为这样它会 for each lead_id添加一行,因为所有lead都会以状态_id 1进入DB.
我目前使用的查询:
INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
WHERE `lead__status_id` = 1 AND
数据是什么样子的:
lead_id | status_id | moredata |
---|---|---|
1 | 1 | data |
1 | 12 | data |
2 | 1 | data |
2 | 14 | data |
3 | 1 | data |
4 | 1 | data |
5 | 1 | data |
6 | 1 | data |
对于每个新lead(表单提交),它将创建一行,并为lead提供状态id 1(状态:new).我现在需要更新每一行的状态,每个行的状态都是1+1.我想要的是,它将首先判断lead_id是否只在表中存在一次,如果为true,则添加一个具有更新状态_id的新行.
因此,在sql查询之后,它需要如下所示:
lead_id | status_id | moredata |
---|---|---|
1 | 1 | data |
1 | 12 | data |
2 | 1 | data |
2 | 14 | data |
3 | 1 | data |
3 | 12 | data |
4 | 1 | data |
4 | 12 | data |
5 | 1 | data |
5 | 12 | data |
6 | 1 | data |
6 | 12 | data |
TLDR:如果在表中只找到一次lead_id,请添加状态为_id的新行.