两个条件 Where 子句 SQL

Mar*_*cha 0 sql sql-server where-clause conditional-statements

当满足 2 个条件时,我需要过滤一些行,但不排除其他行。

桌子:

idRow   idMaster    idList
1         10        45
2         10        46
3         10        47
4         11        10
5         11        98
6         14        56
7         16        28
8         20        55
Run Code Online (Sandbox Code Playgroud)

例子:

什么时候:

  • idMaster=10 和 id List=45(只显示 idMaster 10 的这个组合)
  • idMaster=11 和 idList=98(仅显示 idMaster 11 的此组合)
  • 也列出所有其他行。

预期结果:

idRow   idMaster    idList
1         10        45
5         11        98
6         14        56
7         16        28
8         20        55
Run Code Online (Sandbox Code Playgroud)

运行 SQL Server 2014

我尝试了 CASE IF 的组合,但所有情况只过滤 idMaster=10,11 和 idList=45,98,不包括其他行

mkR*_*ani 5

虽然您没有提到数据库名称,但以下查询逻辑将适用于所有数据库-

SELECT * 
FROM your_table
WHERE idMaster NOT IN (10,11)
OR (idMaster = 10 AND idList = 45)
OR (idMaster = 11 AND idList = 98)
Run Code Online (Sandbox Code Playgroud)