MySQL和PHP:选择同一日期的所有字段

时间:2014-02-25 13:57:43

标签: php mysql

我有一个包含许多字段的表,其中一个是日期(格式为yyyy / mm / dd)。我想创建一个查询,从而让它继续下去之前的所有条目。我将尝试用示例来更好地解释它。

我的查询:

SELECT 
    id, 
    date, 
    site, 
    url, 
FROM links 
WHERE online    = "yes"  AND 
      data     <= ?      AND 
      category != ?      AND 
ORDER BY date DESC, clicks DESC
LIMIT 200 

数组:

Array
(
    [0] => 2014/02/25
    [1] => Adult
)

问题是,我不想设置限制。由于限制将是同一日期的所有字段。

我无法设置字段date = yyyy/mm/dd,因为我使用的是具有无限滚动样式的脚本,所以我不知道它会是哪个日期。此外,我没有所有日子的数据,所以它会在某些时候失败。

UPDATE 2014/02/25 13:14:00:

我找到了解决方案,不知道它是否是最好的解决方案,但工作得非常好。

SELECT 
id, 
date, 
site, 
url
FROM links 
WHERE publish = "yes"  AND 
  date = ( SELECT date FROM links WHERE date < '2014/02/25' ORDER BY date DESC LIMIT 1 )
  AND category!= 'Adult' 
ORDER BY date DESC, clicks DESC
LIMIT 200 

所以,它只会获得2014/02/24的链接,如果它不存在,那么它将从2014/02/23获取数据,依此类推。

3 个答案:

答案 0 :(得分:1)

将检索到的最后日期存储到变量中。然后将其用于下一个查询。如果查询结果为空,那么您将在前一天再次尝试,直到获得结果。

如果您首先使用SELECT DISTINCT日期查询“可用”日期列表,则可以更好地编写脚本

答案 1 :(得分:1)

是“日期”类型表中的日期行吗? 你应该在yyyy-mm-dd中转换yyyy / mm / dd,这样你就可以把它写在表格中。

Select可能如下所示:

SELECT ... 
FROM tabelle
WHERE date BETWEEN '2007-09-20' AND '2007-09-23'

答案 2 :(得分:0)

我找到了解决方案,不知道它是否是最好的解决方案,但工作得非常好。

SELECT 
id, 
date, 
site, 
url
FROM links 
WHERE publish = "yes"  AND 
  date = ( SELECT date FROM links WHERE date < '2014/02/25' ORDER BY date DESC LIMIT 1 )
  AND category!= 'Adult' 
ORDER BY date DESC, clicks DESC
LIMIT 200 

所以,它只会获得2014/02/24的链接,如果它不存在,那么它将从2014/02/23获取数据,依此类推。