mysql 需要从我的表中查找 future 的包

标签 mysql

我需要 Mysql 查询: 我有一个包含 start_date 和 End_date 列的表,从中我需要找出谁有 future 的软件包。 future 的软件包意味着在他的软件包到期日期之前他更新了他的软件包。例如:

person_id    start_date      end_date
101765       28-04-2017      27-07-2017
101765       10-07-2017      26-10-2017

从上面的例子来看,同一个人在他的包裹结束之前更新了他的包裹。 所以我需要显示这些类型的包以显示为 future 的包。

请帮我解决这个问题

最佳答案

将表与其自身连接起来,并将一行的 start_date 与另一行的 end_date 进行比较。

SELECT *
FROM yourtable AS t1
JOIN yourtable AS t2 
ON t1.person_id = t2.person_id AND t1.id != t2.id AND t1.start_date < t2.end_date

我假设表中还有一个唯一的 id 字段,我用它来防止将行与其自身进行比较。

关于mysql 需要从我的表中查找 future 的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45428374/

相关文章:

mysql - 获取名称在列中的顺序

php - 使用外键从现有表创建 slug

mysql - 在 MySQL 查询中使用 CASE 进行多个条件查询

MySQL:JOIN 与 WHERE 性能

php - MySQL php 查询漏洞

php - 完整性约束违规 : Magento

php - 使用 password_hash 加载数据本地 Infile

php - 用于生产的 LAMP 堆栈?使用 PHP 5.4.x、Apache 2.4.x、MySQL 5.5.x

python - 当我的机器中已经安装了 MySQL 时,我还需要在 Django 虚拟环境中安装 MySQL 吗?

mysql - 用值填充 LEFT JOIN 中的 NULL