mysql - 如何在mysql中使用MAX来获得以下结果

标签 mysql

这是查询

SELECT research_id,
    IF(product_id = 4, IF(value REGEXP '^-?[0-9]+$' > 0, value, IF(value = 'Yes', 1, 0)), 0) AS val1,
    IF(product_id = 8, IF(value REGEXP '^-?[0-9]+$' > 0, value, IF(value = 'Yes', 1, 0)), 0) AS val2
FROM research_product_details rpd
LEFT JOIN products p
ON rpd.product_id = p.id
WHERE (product_id = 4 AND value >= 50) OR (product_id = 8 AND value >= 50)
ORDER BY research_id ASC , product_id ASC

我从这个查询中得到了这个结果

enter image description here

我想要像关注

enter image description here

最佳答案

正如 @Jkike 在他的评论中提到的,实现您想要的效果的一种方法是简单地包装当前查询和 GROUP BY research_id 列,选择最大值对于 val1val2 列:

SELECT t.research_id AS research_id, MAX(t.val1) AS val1, MAX(t.val2) AS val2
FROM
(
    SELECT research_id,
        IF(product_id = 4, IF(value REGEXP '^-?[0-9]+$' > 0, value, IF(value = 'Yes', 1, 0)), 0) AS val1,
        IF(product_id = 8, IF(value REGEXP '^-?[0-9]+$' > 0, value, IF(value = 'Yes', 1, 0)), 0) AS val2
    FROM research_product_details rpd
    LEFT JOIN products p
    ON rpd.product_id = p.id
    WHERE (product_id = 4 AND value >= 50) OR (product_id = 8 AND value >= 50)
    ORDER BY research_id ASC , product_id ASC
) AS t
GROUP BY t.research_id

关于mysql - 如何在mysql中使用MAX来获得以下结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32199204/

相关文章:

java - 使用 Java 通过 SSH 连接到 MySQL

mysql - 使用 sails.js 将数据存储在 mysql 中

mysql - mysql shell 脚本中出现意外的 EOF

php - 统计某列出现的次数

php - mysql查询中的FIND_IN_SET双条件

MySQL - 跨多行和 2 列获取唯一 ID - GROUP BY 几乎让我到达那里

MySQL - 当指定 HAVING 时使用 COUNT() 返回总结果

mysql - 如何在Django的Model中让id自动增加2?

html - SQL 按日期显示每个任务的最新记录

php - 我应该将我的网站升级到 PHP MySQLi 还是 PDO?