【问题标题】:SQL query Compare two WHERE clauses using same tableSQL查询使用同一张表比较两个WHERE子句
【发布时间】:2017-05-23 11:22:49
【问题描述】:

我希望比较存储在同一个表中的两组数据。如果这是一个重复的 SO 帖子,我很抱歉,我已经阅读了一些其他帖子,但无法实施它来解决我的问题。

我正在运行查询以显示最近日期 (2017-05-20) 的所有运动员和时间:

    SELECT  `eventID`,
    `location`,<BR>
    `date`,
    `barcode`,
    `runner`,
    `Gender`,
    `time` FROM `TableName` WHERE `date`='2017-05-20'

我想将每位运动员在 5 月 20 日的时间与之前的时间进行比较。

SELECT `time` FROM `TableName` WHERE `date`='2017-05-13'

如何构建显示所有 ATHLETES, TIME on 13th, TIME on 20th 的查询

我已经尝试了一些方法,例如 UNION ALL

【问题讨论】:

  • 您使用的是 MySQL 还是 MS SQL Server?不要标记未涉及的产品。
  • 您可以使用自我JOIN 来获得所需的结果。
  • 对不起@jarlh 我正在使用 MySQL
  • 编辑您的问题并提供示例数据和所需结果。

标签: mysql sql


【解决方案1】:

您可以使用相关子查询来获取上一个时间:

SELECT t.*,
       (SELECT t2.time
        FROM TableName t2
        WHERE t2.runner = t.runner AND t2.eventId = t.eventId AND
              t2.date < t.date
        ORDER BY t2.date DESC
        LIMIT 1
       ) prev_time
FROM `TableName` t
WHERE t.date = '2017-05-20';

为了提高性能,您需要在(runner, eventid, date, time) 上建立索引。

【讨论】:

  • 谢谢@Gordon Linoff,我现在正在吃午饭。我会测试你的代码并在它工作时评价你的评论。看起来它会给我正在寻找的东西
  • 我一直在尝试通过很多不同的尝试来实现这个相关的子查询 SQL 语句。它不会返回任何错误,但 Phpmyadmin 页面只是冻结并且不执行。我会继续努力,我想接受这个答案,因为我确信它必须有效,但我还不能让它交付。
猜你喜欢
  • 2021-10-20
  • 2019-05-08
  • 2022-12-10
  • 1970-01-01
  • 2021-05-20
  • 2020-08-18
  • 2014-12-01
  • 2017-01-22
  • 2018-03-24
相关资源
最近更新 更多