这是查询
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
我从这个查询中得到了这个结果
我想要像关注
最佳答案
正如 @Jkike 在他的评论中提到的,实现您想要的效果的一种方法是简单地包装当前查询和 GROUP BY
research_id
列,选择最大值对于 val1
和 val2
列:
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/