首页 > 解决方案 > 在sql中使用select子句获取记录的问题

问题描述

我正在尝试获取特定日期范围内且具有特定标题的记录

为此,我使用以下查询

SELECT * FROM `table_name` 
WHERE `page_title` = 'Surfshark Review: Should we Surf the Internet Ocean with this VPN? (2019)' 
  AND STR_TO_DATE(`datetime`, '%Y-%m-%d') 
        BETWEEN STR_TO_DATE('2019-09-16', '%Y-%m-%d') 
                AND STR_TO_DATE('2019-09-22', '%Y-%m-%d');

当我使用此查询时,它给我 null 没有任何错误,但是当我使用以下查询时

SELECT `page_title` 
FROM `table_name` 
WHERE STR_TO_DATE(`datetime`, '%Y-%m-%d') 
        BETWEEN STR_TO_DATE('2019-09-16', '%Y-%m-%d') 
                AND STR_TO_DATE('2019-09-22', '%Y-%m-%d') 
GROUP BY `page_title`;

它向我展示了记录中的“Surfshark 评论:我们应该使用这个 VPN 冲浪互联网海洋吗?(2019 年)”,我不知道为什么会发生这种情况。

任何人都可以帮我解决这个问题。

标签: mysqlsql

解决方案


您的查询没有任何问题。在严格的情况下看起来不错……或者可能是数据问题。

如果你这样工作。

SELECT....
FROM ....
WHERE  ( column like "%xxx%" )  -- a condition 
 OR 
(
  col_date BETWEEN "xxxx-xx-xx" AND "xxxx-xx-xx"   -- a condition 
   AND  anothercondition   -- a condition 
   and anothercondition     -- a condition 
)

添加括号并更改 AND/OR 运算符和 between 会有所不同。

如需更多点击,您可以为关键字搜索制作动态脚本。您可以使用编程来生成这部分查询。

       (column like "%word%" 
    OR  column like "%anotherword%" 
   OR  column like "%anotherword%" )

推荐阅读