Product
桌子:
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'
我不在乎两者中的哪一个,只要每次运行查询时结果相同即可。