我有 1 列,编号为 0,称为 product_attribute_id
,并且需要与 product_id
分组,因为它是 0(类似于如果记录为 0,则使用列名称重新分组) product_id
)
我不能只进行 GROUP BY,因为我的其他记录将会消失。仅当我的 product_attribute_id
中包含记录 0
和我的另一个名为 product_id
SELECT
od.id_order_detail,
od.id_order,
od.product_id,
od.product_attribute_id,
od.product_name,
(od.product_quantity) AS 'Total closed'
FROM
ex.ps_order_detail od
WHERE
od.product_id IN (SELECT DISTINCT
p.id_product
FROM
ex.ps_product p
WHERE
p.id_manufacturer = '1')
ORDER BY od.product_attribute_id , od.product_id DESC
我的其他记录只需要保留 0
的记录需要与其他列进行查找
最佳答案
您可以使用聚合。目前还不清楚您想要的许多列的组合行是什么。这是一种猜测:
SELECT MAX(od.id_order_detail) as id_order_detail,
MAX(od.id_order) as id_order,
(CASE WHEN product_attribute_id > 0 THEN product_attribute_id END) as product_attribute_id,
MAX(od.product_attribute_id) as product_attribute_id,
od.product_name,
SUM(od.product_quantity) AS TotalClosed
FROM ex.ps_order_detail od
WHERE od.product_id IN (SELECT p.id_product
FROM ex.ps_product p
WHERE p.id_manufacturer = 1 -- ids are probably not strings
)
GROUP BY product_id, product_name,
(CASE WHEN product_attribute_id > 0 THEN product_attribute_id END)
ORDER BY product_attribute_id, product_id DESC;
关于mysql - SQL 仅重组选定的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42531960/