是否有方法判断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的新行.

推荐答案

如果您的表每行有一个唯一的id,那么您可以使用如下查询

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
FROM `lead_has_status` l
WHERE `lead__status_id` = 1 AND NOT EXISTS ( 
  SELECT 1 FROM lead_has_status 
  WHERE `lead_id` = l.`lead_id` AND id <> l.id );

而且没有身份证

INSERT INTO `lead_has_status` (`lead_id`, `lead__status_id`, `comment`, `created_at`, `updated_at`)
SELECT (`lead_id`, 13, "", `created_at`, `updated_at`)
FROM `lead_has_status` l
WHERE `lead__status_id` = 1 AND  () 
  SELECT COUNT(*) FROM lead_has_status 
  WHERE `lead_id` = l.`lead_id`) = 1 ;

Mysql相关问答推荐

SQL查询仅插入5行

MySQL将JSON值从对象类型更改为数组

SQL不断返回查询失败,并且不知道从这里到哪里go

MySQL:返回所有条件(但不满足其他条件)为真的所有结果

MySQL中如何对字符串进行算术运算?

PythonAnywhere中SSH到MySQL数据库无限期挂起,SSH正确,workbench可以完美连接

使用不同的 where 列进行子 Select

0000-00-00 00:00:00 表中的日期设置为 NOT NULL

为什么以及如何将 Django filter-by BooleanField 查询转换为 SQL WHERE 或 WHERE NOT 而不是 1/0?

如何使用 express.js 和 react.js 删除连接表中的元素和关联元素

使用数据表的直方图(SQL 查询)

在一个 SQL 查询中对同一列中相同类型的不同值求和

DECIMAL(m, n) 在 64 位系统中如何表示?

如何查看打开了多少 MySQL 连接?

不正确的整数(2147483647)被插入到 MySQL 中?

从mysql中的大表中快速 Select 随机行

Sequelize Query 查找日期范围内的所有记录

#1030 - 从存储引擎 Aria 收到错误 176读取错误校验和的页面

SQL WHERE 列 = 一切

从 MySQL JSON 数据类型中提取不带引号的值