在MySQL中查询逗号分隔值

时间:2014-05-07 20:44:32

标签: mysql sql querying

我需要一种方法来查询数据集合。我有一个最近活动日期的列表,每个活动日期存储在每个用户的1行中。每行都有一个loginDates字段,该字段由逗号分隔的时间戳列表组成。

我需要做的是在此日期运行报告,以查找自XXXXXX时间戳以来的人员。问题在于它的逗号分隔意味着我无法使用我所知道的方法进行查询。

这是一个示例行

id  userID  accessDates
2   6   1399494405,1399494465,1399494525,1399494585,1399494623

我想用纯文本实现的目标

SELECT all_fields FROM accessTable WHERE accessDate > YESTERDAY 

此外,这些日期可能会持续数百天,并且有数百个时间戳。

1 个答案:

答案 0 :(得分:0)

假设TimeStamp值在数据样本显示时是有序的,如果字符串中的任何TimeStamp值大于给定日期,那么最新的值也将大于该值。因此,您只需要最新的TimeStamp值即可满足您的要求:

SET @Yesterday =
  UNIX_TIMESTAMP(DATE_ADD(DATE(CURRENT_TIMESTAMP()),INTERVAL -1 DAY));

SELECT *
FROM accessTable
WHERE  CAST(RIGHT(accessDates,10) AS UNSIGNED) > @Yesterday;

如果您想单独查询每个TimeStamps,最好的解决方案是将它们放入带有用户ID的单个表列中:

userID    accessDate
------    ----------
6         1399494405
6         1399494465
6         1399494525
6         1399494585
6         1399494623