sql - 从一个表中选择其中两列不存在于另一个表中的记录

标签 sql sql-server tsql sql-server-2012

我有表1:

Id      Program Price   Age
12345   ABC     10      1
12345   CDE     23      3
12345   FGH     43      2
12346   ABC     5       4
12346   CDE     2       5
12367   CDE     10      6

和表2:

ID      Program BestBefore
12345   ABC     2
12345   FGH     3
12346   ABC     1

我想要得到下表,

Id      Program  Price  Age
12345   CDE      10     1
12346   CDE      2      5
12367   CDE      10     6

即从第一个表中获取 ID+Program 不在第二个表中的行。我正在使用 MS SQL Server Express 2012,我不想向原始数据库添加任何列。是否可以不创建临时变量?

最佳答案

有几种方法可以做到这一点,这里有一种使用 not contains 的方法:

select *
from table1 t1
where not exists (
    select 1
    from table2 t2 
    where t1.id = t2.id and t1.program = t2.program
)

关于sql - 从一个表中选择其中两列不存在于另一个表中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857726/

相关文章:

sql - 如何替换精确的字符串

SQL UNION - 不合逻辑的结果

sql-server - 带有参数化查询的经典 ASP 页面上的 SQL 注入(inject) : text fields

tsql - 如何在SQL中提取两个特殊字符之间的字符串

xml - 使用 T-SQL 更新多个 XML 节点

c# - 代码使用错误的命名空间

mysql - SQL 和 Delphi : recursive mechanism for creating a tree from a table

php - mysql 中的排序应该与 excel 中的排序相同?

sql - 如何在SQL Server中将自定义字符串转换为日期

javascript - 如何使用 Sequelize.js 获取 MAX(id) GROUP BY 其他字段?