繁体   English   中英

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

[英]MySQL and PHP: Select all fields from the same date

我有一个包含许多字段的表,其中之一是日期(格式yyyy / mm / dd)。 我想进行查询,以获取e持续下降前几天的所有条目。 我将尝试通过示例更好地解释它。

我的查询:

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因为我使用的脚本具有无限滚动样式,因此我不知道它将是哪个日期。 此外,我没有一整天的数据,因此有时会失败。

更新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的数据,依此类推。

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

如果您首先使用SELECT DISTINCT日期查询“可用”日期列表,则可以改善脚本的性能

表中的日期行是“ date”类型吗? 您应该将yyyy / mm / dd转换为yyyy-mm-dd,以便可以将其写在表中。

选择可能看起来像这样:

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

我找到了解决方案,不知道这是否是最好的解决方案,但是效果很好。

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的数据,依此类推。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM