2012-06-21 86 views
0

請原諒我的標題含糊不清,我真的不知道如何簡潔地編寫我想要做的事情。Mysql查詢在QUERY中,每個ID只有1個結果

我有

名稱的表 - 海峽 ITEM_ID - INT 位置 - 詮釋

name  item_id position 
| 6asd |   17 |  1 | 
| asdf |   3 |  1 | 
| asdf |   3 |  2 | 
| asdf |   3 |  3 | 
| asdf |   3 |  4 | 

我想的item_ids列表上使用IN詢問,只有每返回1行項目,這應該是最低位置的行。

select name, item_id, position from my_table 
WHERE item_id IN (17, 3) AND name != ''; 

當我只是試圖返回最低位置時,這會返回item_id的所有行。當然,我看着ORDER_BY和LIMIT,但我的查詢只在整個結果集上完成,而不是單獨在每個ID上。

ORDER BY position ASC LIMIT 1

有沒有人嘗試過這樣做?任何幫助將不勝感激。我需要以某種方式使用子選擇嗎?

+2

您是否在尋找MIN()? – Bono

+0

@Bono我認爲這正是我正在尋找的。 – dm03514

回答

4

使用MIN()可用。

SELECT name, item_id, MIN(position) 
FROM my_table 
WHERE item_id IN (17, 3) AND name != '' 
GROUP BY item_id; 
+0

集團由做出了區別 – dm03514

1

我想你可能正在尋找MIN()函數。

MySQL MIN函數用於找出記錄集中具有最小值的記錄。

嘗試一些沿着這些路線:

"SELECT name, item_id, MIN(position) 
FROM my_table 
WHERE item_id IN (17, 3) AND name != '' 
GROUP BY item_id"; 
+0

你需要額外的'GROUP BY item_id'語句... –

+0

@FahimParkar謝謝,這裏不是一個真正的sql guru; P – Bono

+0

即使我不是guru。 :D仍然是初學者。 –

相關問題