作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是编程新手,这是我的第一个问题,所以如果我犯了错误,我深表歉意。
我写了这个查询:
SELECT U.Id, UWH.Role, USI.Title, CAST(USI.StartDate AS DATE)
FROM UserWorkHistory UWH
JOIN Users U ON UWH.UserId=U.Id
JOIN UserStoryItems USI ON U.Id=USI.UserId
JOIN UserWorkHistoryTypes UWHT ON UWH.UserWorkHistoryTypeId=UWHT.Id
WHERE U.Location LIKE '%Great Britain%'
OR U.Location LIKE '%United Kingdom%'
OR U.Location LIKE '%England%'
OR U.Location LIKE '%UK%'
OR U.Location LIKE '%U.K.%'
AND UWHT.Id = 1
AND USI.Id = 1
AND CAST(USI.StartDate AS DATE) > DATEADD(YEAR,-5,GETDATE())
AND UWH.Role LIKE '%Contract%'
OR UWH.Role LIKE '%Contractor%'
OR UWH.Role LIKE '%Freelance%'
OR UWH.Role LIKE '%Non-perm%'
OR UWH.Role LIKE '%non-permanent%'
OR USI.Title LIKE '%Contractor%'
OR USI.Title LIKE '%Contractor%'
OR USI.Title LIKE '%Freelance%'
OR USI.Title LIKE '%Non-perm%'
OR USI.Title LIKE '%non-permanent%'
OR USI.Title LIKE '%self-made%'
我想说明四件事:
1) 我得到的结果来自英国
2) 我得到的结果包含我在“LIKE”参数中指定的任何单词。
3) 结果符合规则(UWHT.Id = 1,USI.Id = 1)。
4) 只有过去 5 年开始日期的结果返回给我。
除了位置之外,没有其他任何东西像我想要的那样返回。我想这是因为 AND/OR 语法不正确,但找不到以前的 SO 问题来解释如何执行此操作(如果有一个问题但我错过了,我深表歉意)。
最佳答案
AND
takes precedence over OR
.您应该将 AND
和 OR
语句分组:
Select U.Id,
UWH.Role,
USI.Title,
Cast(USI.StartDate As Date)
From UserWorkHistory UWH
Join Users U On UWH.UserId = U.Id
Join UserStoryItems USI On U.Id = USI.UserId
Join UserWorkHistoryTypes UWHT On UWH.UserWorkHistoryTypeId = UWHT.Id
Where
(
U.Location Like '%Great Britain%'
Or U.Location Like '%United Kingdom%'
Or U.Location Like '%England%'
Or U.Location Like '%UK%'
Or U.Location Like '%U.K.%'
)
And UWHT.Id = 1
And USI.Id = 1
And Cast(USI.StartDate As Date) > DateAdd(Year, -5, GetDate())
And
(
(
UWH.Role Like '%Contract%'
Or UWH.Role Like '%Contractor%'
Or UWH.Role Like '%Freelance%'
Or UWH.Role Like '%Non-perm%'
Or UWH.Role Like '%non-permanent%'
)
Or
(
USI.Title Like '%Contractor%'
Or USI.Title Like '%Contractor%'
Or USI.Title Like '%Freelance%'
Or USI.Title Like '%Non-perm%'
Or USI.Title Like '%non-permanent%'
Or USI.Title Like '%self-made%'
)
);
关于sql - 如何在 SQL Server 中有效地使用 AND/OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003598/
我是一名优秀的程序员,十分优秀!