首页 > 解决方案 > 排除出现在不同表中的值

问题描述

我想根据 userId 排除 Table1 中的所有属性并出现在 Table2 中,如给定示例中所示,条件是 Table1 中项目的 EventTime 小于 Table2 中的 EventTime

表格1:

╔════════╦═══════════════════════╗
║ UserId ║       EventTime       ║
╠════════╬═══════════════════════╣
║      1 ║ 2/15/2012 11:53:16 AM ║
║      2 ║ 2/16/2012 11:53:20 AM ║
║      3 ║ 2/16/2012 11:54:01 AM ║
║      4 ║ 2/16/2012 11:05:03 PM ║
║      5 ║ 2/16/2012 11:09:03 PM ║
╚════════╩═══════════════════════╝

表2:

╔════════╦═══════════════════════╗
║ UserId ║       EventTime       ║
╠════════╬═══════════════════════╣
║      1 ║ 2/15/2012 11:54:16 AM ║
║      2 ║ 2/16/2012 11:55:20 AM ║
║      3 ║ 2/16/2012 11:56:01 AM ║
╚════════╩═══════════════════════╝

输出:

╔════════╦═══════════════════════╗
║ UserId ║       EventTime       ║
╠════════╬═══════════════════════╣
║      4 ║ 2/16/2012 11:05:03 PM ║
║      5 ║ 2/16/2012 11:09:03 PM ║
╚════════╩═══════════════════════╝

标签: sqlsql-server

解决方案


您可以使用except

select t1.*
from table1 t1
except
select t2.*
from table2 t2;

推荐阅读