Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL查询条件语句_Mysql_Conditional Statements - Fatal编程技术网

MYSQL查询条件语句

MYSQL查询条件语句,mysql,conditional-statements,Mysql,Conditional Statements,我对一个查询有问题: 我有一张桌子,上面有客户下的订单清单 orders: customer_id, payment_method ...some other field 我需要提取客户id,如果客户做出了​​至少有一笔具有特定付款方式的付款 我试过这样的方法: SELECT DISTINCT o.customer_id, CASE WHEN o.payment_method = 10 THEN 'YES' ELSE 'NO' END AS credit_card FROM orders A

我对一个查询有问题: 我有一张桌子,上面有客户下的订单清单

orders: customer_id, payment_method ...some other field
我需要提取客户id,如果客户做出了​​至少有一笔具有特定付款方式的付款

我试过这样的方法:

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

但如果客户做出​​不同付款方式的付款显示两条记录,一条为“是”,另一条为“否”。。。只能获取一个值?

您可以使用group by进行自联接,并在联接表中测试NULL(未测试):

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
不确定您是否需要问题中的
p.year=2012
条件

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