2015-08-25 35 views
0

這是查詢如何在MySQL中使用MAX獲得跟着導致

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

+1

我想你可以通過在research_id使用組 – Jkike

回答

1

正如@Jkike在他的評論中提到的,一個的方式來實現你想要的是簡單地包裝你當前的查詢和GROUP BYresearch_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