【发布时间】:2011-12-20 23:02:56
【问题描述】:
所以我有 2 张桌子......产品和图片
Products
---------
id
value1
value2
value3
etc..
Images
---------
id
productId
imageName
每个产品的图像表将包含多个图像,因此当我运行此查询时: (!= 0 是因为有些图像没有 productId,所以我想排除它们,不确定是否有更好的方法来处理它,或者我什至需要包含它)
select p.*, i.imageName
from products p, images i
where p.id = i.productId and i.productId != 0
我得到了结果,但它给了我多个条目,我只想要每个产品一个结果,我希望它拉出首先添加的图像(所以是最旧的)......
目前的结果是这样的---
id : 1
imagename: name1.jpg
id : 2
imagename: name5.jpg
id: 2
imagename: name6.jpg
id: 2
imagename: name7.jpg
id: 3
imagename: name3.jpg
etc... etc...
我希望它看起来像这样......
id: 1
imagename: name1.jpg
id: 2
imagename: name5.jpg
id: 3
imagename: name 3.jpg
这有意义吗?谁能帮我解决我的问题?
【问题讨论】:
-
您使用什么标准来选择 name5.jpg 而不是 name6.jpg?这只是随机选择还是您有明确的内容?
-
我猜
select distinct可能有用吗? -
按时间顺序最旧的文件,所有图像上都有时间戳,所以我可能会按时间戳排序,但我认为数据库无论如何都会检索 chrono,因此可能没有必要在查询中包含时间戳逻辑跨度>
-
我添加了
greatest-n-per-group标签。按照这个标签在 SQL 中为这个问题提供几十个答案。
标签: mysql sql join greatest-n-per-group