gpt4 book ai didi

sql - 如何在 SQL Server 中有效地使用 AND/OR

转载 作者:行者123 更新时间:2023-12-04 14:04:37 25 4
gpt4 key购买 nike

我是编程新手,这是我的第一个问题,所以如果我犯了错误,我深表歉意。

我写了这个查询:

   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 .您应该将 ANDOR 语句分组:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com