gpt4 book ai didi

sql - 没有子查询,一个表的两个 "where"语句不起作用

转载 作者:行者123 更新时间:2023-12-04 21:43:35 24 4
gpt4 key购买 nike

我有一个包含 3 列的表格:namelastnamedate

例如:

Name Lastname Date
Ab Ab 2008-07-01
Ab Ab 2006-06-23
Kb Kb 2008-07-01
Kb Kb 2007-06-03

我需要找到分配给 2008-07 而不是 2006-06 的人员的姓名。所以对于这个例子,输出将是:

Name Lastname Date
Kb Kb 2008-07-01
Kb Kb 2007-06-03

我的代码:

select  Name, Lastname, YEAR(date), MONTH(date) from MyTable
where (YEAR(date) = 2008 AND MONTH(date) = 7) AND (YEAR(date) <> 2006 AND MONTH(date) <> 6)

它不能很好地工作,因为实际上什么都没有发生(它“阻止”例如所有月份为 6 的名字)。我尝试用 UNION 语句来做,但没有什么效果。

请注意,我需要在不使用子查询的情况下执行此操作。

最佳答案

我认为您需要一个 group by 和一个 having 子句,因为您正在寻找多行:

select  Name, Lastname
from MyTable
group by Name, LastName
having
sum(case when YEAR(date) = 2008 AND MONTH(date) = 7 then 1 else 0 end) > 0 and
sum(case when YEAR(date) = 2006 AND MONTH(date) = 6 then 1 else 0 end) = 0;

having 子句中的每个条件都会计算匹配的行数。 > 0 表示至少有一个。 = 0 表示没有。这很容易推广到更多条件。

关于sql - 没有子查询,一个表的两个 "where"语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28311313/

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