我有一个表,其中包含具有相同标题的产品的多个实例的产品信息,由不同的颜色和它们的 ID 标识。我需要输出整行,其中 id = 按标题分组的最大 id,但我似乎无法做到这一点。这是一个非常简化的表格和一些示例数据:
id title colour description
1 rico red blah1
2 rico blue blah2
3 rico yellow blah3
4 katia black blah4
5 katia white blah5
在这个使用我的代码的示例中,当我想要 3 个 rico yellow blah3 时,我得到了 1 个 rico red blah1。
这是我使用的代码:
SELECT pd_id, pd_title, pd_description, pd_colour,
pd_price,pd_large_image,pd_date,cat_sub_id_3,pd_new
FROM product
WHERE
cat_sub_id_1 = '".$cat_sub_id."'
AND cat_parent_id='".$cat_parent_id."'
GROUP BY pd_title
HAVING MAX(pd_id)
ORDER BY pd_id DESC
更新:谢谢大家,
我使用 alinoz 的答案得出了以下有效的代码:)
SELECT
pd_id,pd_title,pd_description,pd_colour,pd_price,pd_large_image,pd_date,cat_sub_id_3,pd_new
FROM product
HERE cat_sub_id_1 = '".$cat_sub_id."' AND cat_parent_id='".$cat_parent_id."'
AND pd_id IN (
SELECT max(pd_id)
FROM product
WHERE cat_sub_id_1 = '".$cat_sub_id."' AND cat_parent_id='".$cat_parent_id."'
GROUP BY pd_title
)
GROUP BY pd_title
ORDER BY pd_id DESC
最佳答案
啊啊啊,好老的 greatest-n-per-group ...
select *
from YourTable yt
inner join(
select title, max(id) id
from YourTable
group by title
) ss on yt.id = ss.id and yt.title = ss.title
当然,您应该根据自己的需要进行相应调整。
此外,我认为这是“必读”:SQL Select only rows with Max Value on a Column
关于mysql - SQL 选择 id=max(id) 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7809475/