2012-07-19 195 views
0

我有一个查询问题: 我有一个表放在客户MySQL查询条件语句

orders: customer_id, payment_method ...some other field 

我需要提取CUSTOMER_ID和“YES”,如果客户有订单列表由至少一个支付付款

的具体方式我想是这样的:

SELECT DISTINCT o.customer_id, 
CASE WHEN o.payment_method = 10 THEN 'YES' ELSE 'NO' END AS credit_card 
FROM orders AS o 
WHERE o.year = 2012 
ORDER BY o.customer_id 

但如果客户已付款的Wi显示了两种不同的支付方式,一种是'YES',一种是'NO'...可能只有一种价值?

回答

2
SELECT o.customer_id, 
     IF(MAX(IF(o.payment_method=10, 1, 0)) = 1, 'YES', 'NO') credit_card 
FROM  orders o 
WHERE o.year = 2012 
GROUP BY o.customer_id 
0

你可以做一个自我与测试组,并加入了NULL在连接表(未经测试):

SELECT customer_id, IF(p.customer_id IS NULL, 'NO', 'YES') 
FROM orders o 
LEFT OUTER JOIN orders p ON o.customer_id = p.customer_id AND p.payment_method = 10 
    AND p.year = 2012 
WHERE o.year = 2012 
GROUP BY o.customer_id 
ORDER BY o.customer_id 

不知道,如果你需要从问题的p.year = 2012条件或没有。