mysql - 如何根据依赖的两列中的条件过滤记录

标签 mysql sql sql-server

我在数据库中有一个包含以下列的表:

  1. 月份
  2. 年份
  3. 姓名
  4. 某某
  5. abc

该表将有多个记录,但对月、年和名称的组合有唯一约束。

该表将包含如下数据:

  Month   Year    Name
1) 1       2016   test1
2) 2       2016   test2
3) 3       2016   test3
4) 1       2017   test4
5) 2       2017   test5

现在我想要大于或等于第 3 个月且大于等于 2016 年的记录。 所以输出应该如下所示:

  Month    Year    Name
1) 3       2016   test3
2) 1       2017   test4
3) 2       2017   test5

如何实现。我没有得到任何关于如何做到这一点的提示。我添加了一个 where 子句,月>=3 和年>=2016 但它没有返回任何记录,我认为是正确的,因为我我正在对两个表达式应用 And 条件。

最佳答案

为了产生您在第二个表中描述的结果,我将编写以下查询:

select [Month], [Year], [Name]
from Table -- your table name
where year > 2016 or ( year = 2016 and month >= 3) -- don't forget the parentheses.

我可以从你的结果表中了解到,用文字描述的查询将是:

给我所有年份大于 2017 年的记录(在这种情况下月份无关紧要,给我所有月份)或者如果年份是 2016 年,给我所有大于或等于的月份3(包括 3 月及以后)。不要给我任何年份小于 2016 的记录。

如果这是正确的,那么我上面发布的查询给出了正确的结果。

关于mysql - 如何根据依赖的两列中的条件过滤记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418414/

相关文章:

sql-server - 不使用游标对所有结果集执行存储过程

sql - 使用 PetaPoco 执行参数化存储过程

php - DELETE FROM 语句不起作用?

mysql - 如何显示引用表中的信息?

mysql - 如何避免出现此 MySQL 错误列 COLUMN NAME 的列说明符不正确?

MYSQL - 使用 where 和 filesort

sql - 如何在 MM-DD 上汇总多年的数据,忽略年份

mysql - 重复DB值

sql - Oracle sql查询查找具有特殊字符作为值的列

sql-server - SQL Server 2012 向后兼容 2008 的备份