当前位置: 首页 > 面试题库 >

SQL查询可返回表中未使用的所有日期

邴奇逸
2023-03-14
问题内容

因此,可以说我有一些类似的记录:

2011-01-01 Cat
2011-01-02 Dog
2011-01-04 Horse
2011-01-06 Lion

我该如何构造一个查询,该查询将返回2011-01-03和2011-01-05,即未使用的日期。我将博客发布到未来,我想要一个查询来向我显示我还没有发布任何东西的日子。从当前日期到未来的2周。

更新:

我对建立一个永久性的日期表并不感到兴奋。经过考虑之后,解决方案似乎是制作一个小的存储过程来创建一个临时表。就像是:

CREATE PROCEDURE MISSING_DATES()
BEGIN
    CREATE TABLE TEMPORARY DATES (FUTURE DATETIME NULL)
    INSERT INTO DATES (FUTURE) VALUES (CURDATE())
    INSERT INTO DATES (FUTURE) VALUES (ADDDATE(CURDATE(), INTERVAL 1 DAY))
    ...
    INSERT INTO DATES (FUTURE) VALUES (ADDDATE(CURDATE(), INTERVAL 14 DAY))

    SELECT FUTURE FROM DATES WHERE FUTURE NOT IN (SELECT POSTDATE FROM POSTS)

    DROP TABLE TEMPORARY DATES
END

我猜这是不可能选择 没有 数据的。


问题答案:

没错-SQL并不容易识别丢失的数据。通常的技术是将一个序列(有间隔)连接到一个完整序列上,并在后一个序列中选择那些元素,而数据中没有相应的伙伴。

因此,@BenHoffstein提出的维护永久日期表的建议是一个很好的建议。

简而言之,您可以使用整数表动态创建该日期范围。假设该integers表的列i号至少为0到13,并且您的表的日期列名为datestamp

   SELECT candidate_date AS missing
     FROM (SELECT CURRENT_DATE + INTERVAL i DAY AS candidate_date
             FROM integers
            WHERE i < 14) AS next_two_weeks
LEFT JOIN my_table ON candidate_date = datestamp
    WHERE datestamp is NULL;


 类似资料:
  • 问题内容: 我在Elasticsearch中有一个小型数据库,出于测试目的,我想拉回所有记录。我正在尝试使用以下形式的网址… 有人可以给我您用来完成此操作的URL吗? 问题答案: 我认为支持lucene语法是这样的: 大小默认为10,因此您可能还需要获取10个以上的商品。(其中BIGNUMBER等于您认为大于数据集的数字) 但是,elasticsearch文档建议使用扫描搜索类型针对大型结果集。

  • 问题内容: 我想知道为什么搜索特定术语会返回索引的所有文档,而不返回包含所请求术语的文档。 这是索引以及我的设置方法:(使用elasticsearch头插件浏览器界面) 然后我添加了一些文档: 因此,现在触发“ plaat”搜索时,人们会希望搜索会返回包含“ plaatstaal”的文档。 但是为我节省了更多的搜索,elasticsearch会恢复所有文档的大小,无论其文本内容如何。我在这里想念什

  • 问题内容: 我创建了一个Hive表,该表从文本文件加载数据。但是它对所有查询返回的空结果集。 我尝试了以下命令: 命令被执行,并且表被创建。但是,对于所有查询,始终返回0行,包括 样本数据: 单行输入数据: 1 | 155190 | 7706 | 1 | 17 | 21168.23 | 0.04 | 0.02 | N | O | 1996-03-13 | 1996-02-12 | 1996-03-

  • 它还会返回这个表,遗漏一些行(我希望它给出所有流派,而不仅仅是演员在其中扮演角色的流派): 有趣的是,它为“动画”返回了“0”,但为“儿童”或“喜剧”没有行,这是我正在寻找的结果(所有流派都返回了)。我做错了什么?

  • 问题内容: 我想知道以下内容: 如何从数据库中的多个表中获取数据? 有哪些类型的方法可以做到这一点? 什么是联接和工会,它们之间有何不同? 什么时候应该使用每个与其他比较? 我打算在我的应用程序(例如,PHP)中使用此功能,但是不想对数据库运行多个查询,我需要在单个查询中从多个表中获取数据的哪些选项? 注意:我正在写这篇文章是因为我希望能够链接到有关我在PHP队列中不断遇到的众多问题的书面指南,因

  • 然而,这并不奏效。 为什么有人能提供一个参考吗?