我有一个简单的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
。
我的问题:
我想在“分组依据”声明中设置供应商优先级(例如,Supplier1最相关,但在给定code
的列表中可能不存在)。产品#1和#2是相同的。在我的结果表中,我想看到:
id, code, product_name, supplier
1, 3844, ProductName1, Supplier1
3, 1233, ProductName2, Supplier2
我该如何做到这一点?
答案 0 :(得分: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);
请参阅小提琴here。
答案 1 :(得分:0)
试试这个,
SELECT * FROM table_name GROUP BY code ORDER BY supplier