【问题标题】:datetime comparison between two columns of two different tables in sql Serversql Server中两个不同表的两列之间的日期时间比较
【发布时间】:2021-10-21 10:45:30
【问题描述】:

我有 2 个表,其中包含相同的列但不同的数据。

  
   TOOLS                   DATE
-----------       ----------------------

A10MA17           2021-09-25 05:14:16.000
x10UA50           2021-09-25 05:06:50.000
LU0NV03           2021-09-25 05:04:49.000
NU0MAK8           2021-09-25 05:02:22.000
252WA17           2021-09-25 05:15:12.000

我想稍后选择表(A)中但不在表(B)中的数据,也就是说程序必须选择表(A)中的数据并查看如果以后不存在于表 B 中。

我使用这个请求,但我不知道如何在日期上添加过滤器

SELECT TOOLS FROM A WHERE A NOT IN (SELECT TOOLS FROM B)

谢谢你的帮助

【问题讨论】:

  • 他们的查询无论如何都不起作用,A 是一个表,所以你不能检查它 整个 表不等于TOOLS 在另一个表中的值。但是,我建议使用具有相关子查询的NOT EXISTS

标签: sql sql-server sql-date-functions sqldatetime


【解决方案1】:

正如我在评论中提到的,我建议使用带有相关子查询的 NOT EXISTS

SELECT A.Tools
FROM dbo.A
WHERE NOT EXISTS (SELECT 1
                  FROM dbo.B
                  WHERE B.Tools = A.Tools
                    AND B.[Date] > A.[Date]);

【讨论】:

  • @SMor 将名为A 的表别名为A 完全没有意义;实际上,如果您正在编写类似 VIEW 的东西,SQL Server 可能会删除别名声明。至于架构名称,两个表都是架构定义的,所以我不知道您是什么那里继续……FROM dbo.AFROM dbo.B
  • @SM或者你在说什么?
  • 最好的猜测是,@AaronBertrand,他们希望我用模式定义列名,但是,这样的语法将被弃用,所以这样做不是一个好主意。
  • 特别是当他们有几周前的answer 没有别名或模式名称时,@AaronBertrand。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多