当列值更改并匹配搜索参数时MySQL查询返回行

标签 mysql sql-order-by

我需要编写一个 MySQL 查询,它将搜索每个 lead_id 的版本历史记录,并返回最早版本的行,其中线索类型类似于 "%reservation%" ,而 Employee name 类似于 "%Call Center%"

其想法是通过返回创建预订的版本的行来查找调用中心代理创建的预订。

我研究了与此类似的其他问题,但似乎没有一个问题符合我的具体标准。我不知道从哪里开始。假设这将是某种子查询?

这是我的数据示例:

+---------+---------+-------------+----------------------------+-------------------+
| lead_id | version | lead_typeID |         Lead Type          |   Employee Name   |
+---------+---------+-------------+----------------------------+-------------------+
| 3576109 |       1 |        2552 | Online Inquiry             | Call Center - Joe |
| 3576109 |       2 |        2552 | Online Inquiry             | George            |
| 3576109 |       3 |        2552 | Online Inquiry             | Lisa              |
| 3576109 |       4 |        2552 | Online Inquiry             | Call Center - Bob |
| 3576109 |       5 |        2552 | Online Inquiry             | John              |
| 3576109 |       6 |        2552 | Online Inquiry             | George            |
| 3576109 |       7 |        2552 | Online Inquiry             | George            |
| 3576109 |       8 |        2552 | Online Inquiry             | John              |
| 3576114 |       1 |        2553 | Online Reservation         | Call Center - Joe |
| 3576114 |       2 |        2553 | Online Reservation         | Call Center - Bob |
| 3576142 |       1 |        4866 | Sales Center - Reservation | John              |
| 3576142 |       2 |        4866 | Sales Center - Reservation | Call Center - Joe |
| 3576160 |       1 |        2553 | Online Reservation         | Lisa              |
| 3576160 |       2 |        2553 | Online Reservation         | Call Center - Joe |
| 3576160 |       3 |        2553 | Online Reservation         | George            |
| 3576160 |       4 |        2553 | Online Reservation         | Lisa              |
| 3576164 |       1 |        4865 | Sales Center - Inquiry     | Call Center - Bob |
| 3576164 |       2 |        4865 | Sales Center - Inquiry     | John              |
| 3576164 |       3 |        4865 | Sales Center - Inquiry     | George            |
| 3576164 |       4 |        4865 | Sales Center - Inquiry     | George            |
| 3576193 |       1 |        2553 | Online Reservation         | John              |
| 3576193 |       2 |        2553 | Online Reservation         | Call Center - Joe |
| 3576248 |       1 |        2553 | Online Reservation         | Call Center - Bob |
| 3576248 |       2 |        2553 | Online Reservation         | John              |
| 3576261 |       1 |        2552 | Online Inquiry             | Call Center - Joe |
| 3576261 |       2 |        2552 | Online Inquiry             | Lisa              |
| 3576261 |       3 |        2552 | Online Inquiry             | Call Center - Joe |
| 3576263 |       1 |        4865 | Sales Center - Inquiry     | George            |
| 3576263 |       2 |        4865 | Sales Center - Inquiry     | Lisa              |
| 3576263 |       3 |        4865 | Sales Center - Inquiry     | Call Center - Bob |
| 3576263 |       4 |        4356 | Site - Reservation         | Call Center - Bob |
| 3576289 |       1 |        4865 | Sales Center - Inquiry     | George            |
| 3576289 |       2 |        4865 | Sales Center - Inquiry     | George            |
| 3576310 |       1 |        4867 | Sales Center - Lost        | John              |
| 3576310 |       2 |        4867 | Sales Center - Lost        | Call Center - Joe |
| 3576310 |       3 |        4867 | Sales Center - Lost        | Call Center - Bob |
+---------+---------+-------------+----------------------------+-------------------+

最佳答案

看起来(leadid, version)是唯一的。如果是这样,您可以INNER JOIN一个聚合,获取每个潜在客户 ID 的最低版本。

SELECT t.*
       FROM elbat t
            INNER JOIN (SELECT leadid,
                               min(version) version
                               WHERE `Lead Type` LIKE '%reservation%'
                                     AND `Employee Name` LIKE '%Call Center%'
                               GROUP BY leadid) x
                       ON t.leadid = x.leadid
                          AND t.version = x.version;

关于当列值更改并匹配搜索参数时MySQL查询返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57420477/

相关文章:

php - 排序依据,如果某些相同,则按 SQL 中的其他内容排序

mysql - 如何在 mysql 查询中处理 json

mysql - 如何将localhost数据库(使用xampp的phpmyadmin)传输到ISP(使用digitalocean)

php - 在 MySQL 查询之前解码 ISO-8859-1 并编码为 UTF-8

mysql - 如何使用 MySQL 查询获取今天到期的交易

mysql - 在 mysql 中使用存储过程创建更新查询

在 SQL CE(精简版)版本 3.5 中对字母数字字段进行排序

mysql - 如果 ASC 和 DESC 混合使用,为什么 MySQL 不能为 ORDER BY 使用索引?

mysql - 在 MySQL 中对有序数据对进行排序/排序?

具有字母数字顺序的 MySQL 查询