如何使用MySQL Group选择多个记录?

时间:2013-05-01 16:40:20

标签: php mysql group-by opencart

我似乎无法使用distinctgroup by将某些mySQL记录组合在一起。下面的SQL查询只返回一行 - 我想要CID中的所有值..

我想通过cid或表格中的第一个集合来选择一个随机组。我不能使用AND CID = X ..有没有办法在没有..

id      pid     image                           sort_order      cid
-----
2474    50      data/low.jpg            2                       56
2473    50      data/hi.jpg             3                       59
2471    50      data/thumn.jpg      500                     59
2472    50      data/front.jpg      1000                    56
2470    50      data/back.jpg           1                       56

查询

SELECT *
FROM `ocm1__product_image`
WHERE `product_id` = '50'
GROUP BY `cid`
ORDER BY `ocm1__product_image`.`sort_order` ASC
LIMIT 0 , 30

这应该返回

id      pid     image                           sort_order      cid
2474    50      data/low.jpg            2                       56
2472    50      data/front.jpg      1000                    56
2470    50      data/back.jpg           1                       56

但它会返回两种颜色..我不能将这个组独一无二吗?

它返回错误,我想列出所有cid唯一值

id      pid     image                           sort_order      cid
2474    50      data/low.jpg            2                       56
2471    50      data/thumn.jpg      500                     59

2 个答案:

答案 0 :(得分:2)

这将返回所请求cid的{​​{1}}最低的所有条目 它给出了与您所说的相同的结果,而没有给出具体的pid作为条件;

cid

An SQLfiddle to test with

答案 1 :(得分:-1)

请勿使用group by对其进行排序,您只需使用order by,此外您还必须使用CID值对特定Customer ID进行排序,您的值为Product ID (PID),但未向样本中提供CID值。

SELECT *
FROM `ocm1__product_image`
WHERE `product_id` = '50' and `cid` = '56'
ORDER BY `ocm1__product_image`.`sort_order` ASC
LIMIT 0 , 30

或者如果您想使用ID对它们进行排序,请使用primary key

了解插入的第一个数据的位置
SELECT *
FROM `ocm1__product_image`
WHERE `product_id` = '50' and `cid` = '56'
ORDER BY `ocm1__product_image`.`id` ASC
LIMIT 0 , 30