mysql - SQL 仅重组选定的记录

标签 mysql sql mariadb

我有 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

enter image description here

我的其他记录只需要保留 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/

相关文章:

php - mysql_query 返回 value 和 null 但应该只有 value

mysql - 用于检查一个选项的 mySQL 查询,如果不正确,则检查另一个选项?

javascript - 从 PHP Mysql 查询中将数据提取到 Javascript 中

java - Visualvm 中的自拍时间比其他时间长

mysql - 搜索带有逗号分隔字符串的表?

SQLITE 根据事件 id 计数作业注册

mysql - MariaDB/MySQL 从选择查询插入表,但重复键使用选择查询中的数据

java - MariaDB Java 客户端 1.5.7 是否兼容 JDBC 4.2

mariadb - 如何在 Quarkus 测试中使用 MariaDB devservices?

php - 查询并返回不同值和数量总和