mysql - 如何获取 MySQL 中逗号分隔字段的最大值?

标签 mysql

我有一个 MySQL 表,其中有一个逗号分隔值的字段。如何获得最大值?

示例:

CREATE TABLE `test`.`scale` (`scale` VARCHAR(500));

INSERT INTO `test`.scale 
VALUES 
('1,5,0.3,0.8,1'), 
('0.5,0.7,0.1,0.3'), 
('7,0.5,0.7,4');

规模:

1,5,0.3,0.8,1
0.5,0.7,0.1,0.3
7,0.5,0.7,4

答案:

5
0.7
7

如何选择该字符串中的最大值?

不幸的是,我无法改变前一个人实现逗号分隔解决方案的方式。我希望有一个 MySQL 函数可以帮助我,否则我将不得不做一些乱七八糟的 PHP 事情。

最佳答案

我不相信 SQL 有分割字符串的功能。 Here's some code that claims to do it ,但我还没有测试过。

更深层次的原因是SQL迫切希望你将数据存储在normalized form中。在这种特殊情况下,这意味着每个字段都应该代表有关行主题的单个数据。

本质上,您可以将 scaleanswer 存储在两个单独的表中,您可以使用每个表所属问题的 ID 来将这两个表相互匹配。比例尺每个比例尺选项有一行,而不是每个比例尺一行:

OPTIONS                     ANSWERS
question | scaleoption      question | answer
---------|------------      ---------|-------
       1 | 1.5                    1  | 5
       1 | .3                     2  | .7
       1 | .8               ... 
       1 | 1
       2 | .5
       2 | .7
...

然后,您可以使用查询 select max(scaleoption) from options where Question = 2 来获取问题 2 的最大选项。这种格式还可以让您执行诸如查找满足以下条件之一的所有问题之类的操作:选项为 1,或者获取特定问题有多少个选项的计数。它看起来更复杂,但它是一种灵活、可扩展、可移植的做事方式。

如果您想使用当前的格式,则必须返回整个字符串并用其他编程语言将其分解。

关于mysql - 如何获取 MySQL 中逗号分隔字段的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810034/

相关文章:

javascript - 我在 ajax 成功中收到我的数据如何在表中显示 jquery 数据

SQL View 。我需要用它来提高性能吗?

python - 将 .csv 文件从 linux 导入到 windows MYSQl

mysql - 如何正确加入另一个查询?

php - Azure网站+mysql

MySQL : selecting minimum value from one table and country details from another and grouping them according to country code

php - 如何从两个mysql表中选择不匹配的行

php - 调用 mysql_insert_id() 在 drupal 中不起作用

mysql - 如何在 ruby​​ on Rails 中直接保存迁移文件中的数据

java - Android:无法检索日期