微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 选择列有一定长度和最大值的行

如何解决SQL 选择列有一定长度和最大值的行

Column_A Column_B Column_C
值 1 111A001 某个值 1
值 1 111A002 某些值 2
值 2 112A001 某些值 3
值 2 112A002 某些值 4
值 2 112A003 某些值 5
值 2 112A004 某些值 6
值 3 115A001 某些值 7
值 3 115A002 一些值 8
值 3 115A003 某些值 9
值 4 117A 一些值 10

大家好,

我有一个关于 sql 查询的问题。

从上表中,我想得到如下输出

Column_A Column_B Column_C
值 1 111A002 某个值 2
值 2 112A004 某些值 6
值 3 115A003 某些值 9

未选择值 4,因为在“A”之后的 Column_B 中没有任何内容或没有 3 位数。正如您在顶部表格中看到的,值 1 在列 B、111A001 和 111A002 中有 2 个值。我要选择 111A002。值 2 在 B 列有 4 个值,112A001 - 112A004,我只想选择 112A004。所以关键是我想从 column_A 中的每个值中选择最高值(在 column_b 中)。

我尝试使用 max(column_B) 但它只显示值 4、117A、某些值 10。

如果标题不正确,我深表歉意。

解决方法

也许你正在寻找这样的东西:

select 
  Column_A,max(Column_B) as Column_B,max(Column_C) as Column_C
from d
where length(substring(Column_B,locate('A',Column_B) + 1)) >= 3
group by Column_A
,
select column_a,max(column_b),max(column_c) /* Depends if you want max of column_c or column c value corresponding to the max of column_b - Question wasn't very clear */
from table
where column_b not like '%A___' /* Because you said - "Value 4 is not selected because in Column_B after 'A' there is nothing or it didn't have 3 digit." */
group by column_a

如果您确定,您可以使用它,“A”之后总会有 3 位数字,如果“A”之前的 3 位数字是 ___A%(这也可能是正确的,根据您发布的数据)

%A% 可能不适合您,因为它还会考虑以“A”结尾的字符串;而你在“A”之后需要一些东西

如果您确定字符串将包含 X 个字符,则最好使用 length(column_b) = 7 之类的函数。 不确定您使用的是哪个数据库。所以功能可能不同。一些数据库有 CHAR_LENGTH() 或 LEN()

编辑:只是澄清 ___ 是 3 个下划线。想澄清一下,因为它看起来像一条大线

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?