【问题标题】:Select mixed value from a column in MySql从 MySql 的列中选择混合值
【发布时间】:2020-10-05 13:37:04
【问题描述】:

我有注册表,学生成绩为1,2,3,4,5,6,7,8,9,10,11,12,有时客户将成绩值更改为Grades 1 - 3, Grades 4 - 6, Grades 7 - 12

MySql DB 列的 Grades 值为 1,2,3,4,5,6,7,8,9,10,11,12,Grades 1 - 3, Grades 4 - 6, Grades 7 -12.

现在我正在创建报告,所以我需要根据1,2,3,4,5,6,7,8,9,10,11,12 过滤成绩,但我需要选择成绩1 并且记录有Grades 1 - 3

如果我使用SELECT * FROM registration WHERE Grades LIKE "%1%" 意味着我也获得了成绩1,10,12,Grades 1 - 3

感谢任何建议或帮助。

【问题讨论】:

  • 样本数据和期望的结果会有点帮助。
  • 如果您遇到客户可以输入他们喜欢的任何内容的情况,那么就没有明确的解决方案..
  • 现在您知道为什么在列中使用逗号分隔的列表是个坏主意,它们是处理过程中的噩梦
  • @P.Salmon 它在选择框中。固定值。谢谢
  • DroidDev :) 这实际上让情况变得更糟 :)

标签: mysql sql select mixed


【解决方案1】:

这个简单的答案解决了我的问题,

SELECT Grades FROM registration WHERE Grade ="1" OR Grade ="Grades 1 - 3"

根据用户的查询,使用 if 条件(在 php 中)将填充 WHERE 子句中的成绩。

【讨论】:

  • 是吗?在搜索 1 年级时,您似乎必须知道所有可能的格式——这并不是编程的真正意义——如果 1 到 6 年级在你不知情的情况下出现会发生什么......在编写代码时,你应该使其尽可能通用捕捉所有已知的和尽可能多的未知数。
  • 并在其他地方捕获任何无法想象的未知数,以便您可以优化您的代码。
  • @P.Salmon 正如我已经说过的,它是当前具有固定值的选择框Grades 1 - 3Grades 4 - 6Grades 7 - 12
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 2014-01-27
  • 2021-03-30
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
相关资源
最近更新 更多