嘿,我有一个SQL查询的问题.让我们以此示例数据为例
itemID catID attrib1 attrib2
1 1 10 5
2 1 10 7
3 1 5 10
4 2 18 15
Run Code Online (Sandbox Code Playgroud)
我想为每个类别返回最佳项目(attrib1优先于attrib2)
显然,"SELECT catID,MAX(attrib1),MAX(attrib2)FROM test_table GROUP BY catID"不起作用,因为它将为第一只猫返回10和10.
那么有没有告诉MySQL从attrib2行中选择最大值但只考虑attrib1也是最大值的那些?即返回以下数据
catID attrib1 attrib2
1 10 7
2 18 15
Run Code Online (Sandbox Code Playgroud)
您可以获得最佳的attrib1值,然后加入attrib2值并获得每个attrib1值的最佳值:
select t2.catID, t2.attrib1, max(t2.attrib2)
from
(
select catID, max(attrib1) as attrib1
from test_table
group by catID
) t1
inner join test_table t2 on t2.catID = t1.catID and t2.attrib1 = t1.attrib1
group by t2.catID, t2.attrib1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21365 次 |
| 最近记录: |