2013-01-09 51 views
1

MYSQL - 考虑到下面的MySQL结果集集团

id  code  name    importance 
'1234', 'ID-CS-B', 'Chocolate Sauce', '1', 
'1122', 'ID-MC-A', 'Mint Choc Chip', '5', 
'5621', 'ID-MC-B', 'Mint Choc Chip', '4', 
'1221', 'ID-CS-A', 'Chocolate Sauce', '2', 
'1212', 'ID-CS-C', 'Chocolate Sauce', '3', 

这里有两个产品:巧克力酱和巧克力薄荷片。我想根据重要性从每个产品中提取一个实例。

我想最重要的薄荷巧克力芯片产品,并使用列“重要性”最重要的巧克力酱产品:该值越高越重要

回答

3
SELECT x.* 
     FROM my_table x 
     JOIN 
     (SELECT name, MAX(importance) max_importance FROM my_table GROUP BY name) y 
     ON y.name = x.name 
     AND y.max_importance = x.importance; 
+0

谢谢!上面显示的表格是查询的结果:将查询链接到此结果集的语法是什么? – Johnathan

+0

这取决于原始查询的复杂性。显而易见的答案是用'(your_query)'替换'my_table'的每个实例,但是您可以在不嵌套子查询的情况下更有效地完成整个任务。 – Strawberry

0

试试这个为好,

select b.name, max(a.importance) 
from t b 
left join t a 
on b.id = a.id 
group by b.name 
; 

结果:

NAME    MAX(A.IMPORTANCE) 
Chocolate Sauce  3 
Mint Choc Chip  5 
+0

@Johnathan让我们知道你原来的查询是怎样的。你可能会得到更好的表现,但它是基于你目前正在做的。 – bonCodigo