2014-02-12 75 views
1

假設我有2個產品名稱:死區和死區限制版,並且我想按「product_name」將它們分組以選擇「死區」一個mysql查詢。因此,如果where caluser是「product_name LIKE'%dead space%'」,我希望查詢選擇帶有最短字符串的「product_name」。我可以使用GROUP BY(MySql)選擇最短的字段名稱

非常感謝,

+0

,而不是'like'使用'=' – krishna

+0

是的,這可能是與「死亡空間」的工作,但我會尋找與「死」或只是「空間」的遊戲。謝謝, – Pabola86

+0

@克里希納 - 什麼?他特別不想要完全匹配,所以'='不起作用。 Pabola - 如果你輸入諸如「dead」之類的東西,你想在搜索中加入「Left 4 Dead」嗎?如果您嘗試按照系列/版本進行分組,則需要使用其他設置查詢。 –

回答

3

,你可以嘗試LENGTH()

select product_name ,length(product_name) as the_length from your_table 
where product_name LIKE '%dead space%' 
ORDER BY length(product_name) 
limit 1 

DEMO HERE

+0

他可能只需要一條記錄,但這看起來最接近。 –

+0

@GordonLinoff做你所看到的不錯的戈登:),它的所有你的:)。我只是沒有看到他想要一個結果。無論如何,感謝您的+。編輯也演示 –

1

請嘗試此查詢

select * from table where product_name LIKE '%dead space%' 
HAVING length(product_name) = min(length(product_name)) 
+0

如果這有效,這是巧合。 'having'子句爲'length(product_name)'選擇一個任意的行。它絕對不會在所有情況下工作。 –

+0

@GordonLinoff我在數據庫中檢查了兩行,一個標題更長,一個更短。並選擇較短的一個。 –

+0

。 。把它們放在一個不同的順序。另外,你可以在SQL Fiddle上試試這些東西。 –