下面是表格结构。第一列包含可能出现在多行中的字符串。我希望以这样一种方式编写查询:column1值只重复一次,这样column2包含的行就具有优先权。如果只有b可用,则输出相同。此外,还需要打印相关的第3列。如果在第1列和第2列中有多行具有相同值,请选择任意一行(例如:下面的第2行和第3行)。
下面提供了示例数据和预期的sql输出。
表结构(这里也跳过了其他列)
Column1 Column2 Column3
123 A 1
234 A 1
234 A 4
234 B 2
435 A 2
536 B 1
sql预期输出
Column1 Column2 Column3
123 A 1
234 A 1
435 A 2
536 B 1
注意:这是对这个问题的扩展,基于条件的sql
4条答案
按热度按时间tpxzln5u1#
你可以试试
我相信它会起作用的。
mgdq6dx12#
由于您的mysql版本是8.0,我们可以利用
Row_Number()
功能。我们可以确定Row_Number()
分区中的值Column1
值,行号1对应于Column2
在隔板上。这也将处理多行具有相同最小值的情况Column2
它会选择其中任何一个。然后我们可以在一个派生表中使用这个结果集,得到行号等于1的行。
cczfrluj3#
你可以试试这个:
它是纯ansisql,不依赖于数据库或其版本。
yzuktlbb4#
我认为关联子查询是最简单的方法: