3

特定の mySQL レコードを一緒に使用distinctまたはグループ化できないようです。group by以下のこの SQL クエリは、それぞれ 1 行だけを返します。ただし、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
4

2 に答える 2

-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
于 2013-05-01T18:00:30.497 に答える