【问题标题】:SQL get from match two columnSQL 从匹配两列中获取
【发布时间】:2015-09-23 13:50:39
【问题描述】:

我的桌子是这样的:

+------------------+-------------------+-----------+
|       name       +  student_number   +   date    |
-------------------+-------------------+-----------|
| Daniel           | 2014-10445        | 9-23-15   |
| Eden             | 2014-10420        | 9-23-15   |
| Nadine           | 2014-10012        | 9-24-15   |
| Eden             | 2014-10420        | 9-25-15   |
----------------------------------------------------

我想从第二行获取值,该值在列名 student_number 中包含“2014-10420”,在日期列中包含“9-23-15”。

我在这里有我的查询:SELECT date,student_number FROM attendance WHERE date='9-23-15' AND student_number='2014-10420',但也返回包含“9-23-15”的其他行

如何获取两个匹配列??

【问题讨论】:

  • 另外,仅选择您已经知道其值的两列有什么意义(因为它们由过滤条件固定)?您从中获得的唯一有用信息是匹配记录的数量,SELECT COUNT(*) FROM ... 将更有效地获得。
  • @eggyal:只有一行 (=2) 匹配 where 子句,第 1 行有不同的学号,第 4 行有不同的日期。不过同意第二条评论。
  • @PaulF:好点——我认为日期匹配。评论已删除。
  • 查询在我看来确实没问题 - 你说表格看起来 “类似这样”。这正是它的外观吗?你能创建一个 SQLFiddle 来演示这个问题吗?
  • 我已经按照这张表模拟了它,它可以按我的预期工作。你是如何格式化日期的? MYSQL 可以很有趣的日期,所以我觉得这可能是你的问题

标签: mysql


【解决方案1】:

我会试试这个:

SELECT date,student_number FROM attendance WHERE (date='9-23-15' AND student_number='2014-10420') or date='9-23-15'

这是您要寻找的逻辑吗?

【讨论】:

  • 不就是和date='9-23-15' OR student_number='2014-10420'一样吗?但是 OP 只想要一排而不是两排。
  • 不一样,因为我认为他在其他日子不想要用户'2014-10420'。
  • OP 说 我想从第二行获取值,该值在列名 student_number 中包含“2014-10420”,在日期列中包含“9-23-15”。 但是后来说他得到了日期为“9-23-15”的两行。我将他的问题理解为询问他如何获得匹配日期和学号的查询 - 所以只返回第二行。如果我误解了这个问题 - 那么你当然是对的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2019-01-30
相关资源
最近更新 更多