2013-01-09 55 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