3

私は単純なmysqlテーブルを持っています:

id, code, product_name, supplier
 1, 3844, ProductName1, Supplier1
 2, 3844, ProductName1, Supplier2
 3, 1233, ProductName2, Supplier2

テーブルからすべての個別の製品を照会したい。したがって、SQLコードはselect * from table group by code.

私の問題:

「group by」ステートメントでサプライヤの優先順位を設定したい (たとえば、Supplier1 が最も関連性が高いが、特定のリストに含まれていない可能性があるcode)。1号と2号は同じ商品です。結果のテーブルで、次のことを確認したいと思います。

id, code, product_name, supplier
 1, 3844, ProductName1, Supplier1
 3, 1233, ProductName2, Supplier2

どうすればこれを達成できますか?

4

2 に答える 2

1

おそらくこれが必要です:

SELECT
  MIN(id) id,
  code,
  MIN(product_name) product_name,
  MIN(supplier) supplier
FROM
  yourtable
WHERE
  (code, CASE WHEN supplier='Supplier1' THEN '' ELSE supplier END)
  IN (SELECT   code, min(CASE WHEN supplier='Supplier1' THEN '' ELSE supplier END)
      FROM     yourtable
      GROUP BY code)
GROUP BY
  code
ORDER BY
  min(id);

ここでフィドルを参照してください。

于 2013-03-20T08:20:00.523 に答える
0

これを試して、

SELECT * FROM table_name    GROUP BY code    ORDER BY supplier
于 2013-03-20T08:44:20.790 に答える