WHERE子句中同一列的多个条件

tem*_*pid 5 sql sql-server-2008

我有一张这样的桌子 -

RecordID   PropertyID       PropertyVal
--------------------------------------------------
3215            7           john doe
3215            11          Chicago
3215            13          Business Development Analyst
3216            7           jane doe
3216            11          Chicago
3216            13          Managing Director
3217            7           mike smith
3217            11          Chicago
3217            13          Business Development Analyst
3218            7           john smith
3218            11          Seattle
3218            13          Managing Director
Run Code Online (Sandbox Code Playgroud)

如何返回用户名称PropertyID = 13 AND PropertyVal='Business Development Analyst'AND PropertyID = 11 AND PropertyVal = 'Chicago'.如何为同一列执行多个where子句?

编辑:我需要结果集看起来像这样 -

Name
----
John Doe
Mike Smith
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 5

不确定你到底想要什么。可能是

...
where (PropertyID = 13 AND PropertyVal = 'Business Development Analyst')
   or (PropertyID = 11 AND PropertyVal = 'Chicago')
Run Code Online (Sandbox Code Playgroud)

或者

...
where PropertyID in (13, 11) 
and PropertyVal in ('Business Development Analyst', 'Chicago')
Run Code Online (Sandbox Code Playgroud)


jue*_*n d 5

select PropertyVal
from your_table
where PropertyID = 7
and RecordID in 
(
  select RecordID   
  from your_table
  where (PropertyID = 13 AND PropertyVal='Business Development Analyst')
     or (PropertyID = 11 AND PropertyVal = 'Chicago')
  group by RecordID   
  having count(distinct PropertyID) = 2
)
Run Code Online (Sandbox Code Playgroud)

  • @Bohemian我刚刚检查了MySQL文档,它说AND的优先级高于OR,因此我认为他做对了。但是我个人不喜欢依赖它,并且我总是用括号括住这样的表达式。 (2认同)