Product
表:MySQL的GroupWise的最大的一個字段的長度
id: int
name: varchar(255)
info: varchar(8000)
我需要的所有產品,按名稱分組列表,如果某些產品具有相同的名字,那麼一個最應該挑選info
字段中的數據來顯示。另一個要求是一致性 - 每次都應保證顯示相同的產品。但是,性能並不是我所關心的。
於是我想出了迄今爲止最好的是這樣的:
select * from (select * from product order by length(info) desc) as product group by name
我的理解,這應該工作在MySQL但不保證結果。
有沒有更好的方法?
更新:
一個我正在尋找的例子。如果數據是
1, 'Product1', '12345'
2, 'Product1', '123'
3, 'Product2', '123456'
4, 'Product2', '123456'
5, 'Product2', '12'
預期的結果應該是:
1, 'Product1', '12345'
3, 'Product2', '123456'
或
1, 'Product1', '12345'
4, 'Product2', '123456'
我不在乎這兩個只要是同樣的結果之一每次運行查詢。
你說的一致意思?你不想在產品表中包含所有內容嗎? – 2012-07-25 14:41:50
每次運行查詢時獲得相同結果的一致性。以我的例子MySQL不能保證哪個產品將被分組選取,這意味着每次執行查詢時結果都可能發生變化。 – Leo 2012-07-25 15:08:05
你說哪個「產品」,但查詢是返回所有產品。問題是哪個「信息」。一旦你獲得了最長的一次,你需要什麼樣的一致性? – 2012-07-25 15:36:36