【问题标题】:How do i find all the students that have got more than 70 in any subjects? [closed]我如何找到所有科目超过70的学生? [关闭]
【发布时间】:2020-05-08 13:26:36
【问题描述】:

我有一个我的 sql 表,有 5 个学生,每个学生有 5 个考试。

我需要获取所有在任何科目中获得超过70分的学生与该科目的名称。

表格看起来像这样,我是 mysql 新手,所以我无法找到正确的查询。

请帮忙!

【问题讨论】:

  • 欢迎来到 StackOverflow。请提供一个尝试,以便人们可以帮助您学习,而不是为您提供答案。请阅读How to Ask 此外,如果您将文本放在问题中而不是链接到图像,您更有可能得到帮助。
  • 这是一个非常糟糕的数据模型。每个主题都应位于单独的行中,而不是单独的列中。我建议您努力修复数据模型。
  • 考虑提供示例数据和示例输出为 text 而不是屏幕截图 meta.stackoverflow.com/questions/285551/… 创建屏幕截图可能非常容易,但它使它成为对于任何可能想帮助你的人来说,这要困难得多。更好的是,考虑设置一个演示,例如在 sqlfiddle.comdbfiddle.com 上使用表定义和示例数据。
  • 另外,“我无法找到正确的查询”是一个故事,而不是一个问题。我们将注意到一个 SQL 查询通常以 SELECT 开头,并包含一个带有表名的 FROM 子句。如果这过于明显,我深表歉意,但似乎没有尝试对问题中显示的任何查询进行任何尝试。我们还将注意到,数据的非规范化结构将使查询比数据更规范化的形式复杂得多。
  • here可以找到一些post sql数据的建议

标签: mysql sql mysql-workbench


【解决方案1】:

在您的情况下,根据您的数据库模型,我建议对每个主题进行查询 - 总共 5 个。

SELECT "enroll_no" FROM "tablename" WHERE "sub1_marks" > 70

并分别对其他列执行此操作。

将“tablename”替换为您的表名。

每次调用都将返回您指定的列中的数字大于 70 的enroll_no 条目列表。

这不是很高效,您应该更改模型以将每个检查放在单独的行上,而不是像这样的查询。

【讨论】:

  • 感谢您的回答。但是通过使用此查询 5 次并一次又一次地运行它,我得到 5 个不同的表,仅在我运行任何人时显示所有这些查询的输出。例如,如果我运行 'sub1_marks' > 70,那么我只会得到那些在科目 1 中获得超过 70 分的学生,依此类推。有没有办法将所有这些输出放在一个表中?
  • 您可以将 WHERE 子句与 OR 结合使用。例如: SELECT "enroll_no" FROM "tablename" WHERE "sub1_marks" > 70 OR "sub2_marks" > 70 OR "sub3_marks" > 70 OR "sub4_marks" > 70 OR "sub5_marks" > 70 你不会得到的信息是5 列中的实际值大于 70。而且不用说这在较大的表上性能不是很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2010-10-08
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多