Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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_Sql - Fatal编程技术网

Mysql 如果查询不是特定值,则不显示整行

Mysql 如果查询不是特定值,则不显示整行,mysql,sql,Mysql,Sql,如果我显示的“payment_method”的值不是'x',我不想显示整行。如何更新我的代码以实现此目的 SELECT p.ID AS order_id, max( CASE WHEN pm.meta_key = '_customer_user' AND p.ID = pm.post_id THEN pm.meta_value END ) AS user_ID, max( CASE WHEN pm.meta_key = '_order_total' AND p.ID =

如果我显示的“payment_method”的值不是'x',我不想显示整行。如何更新我的代码以实现此目的

SELECT
    p.ID AS order_id,
    max( CASE WHEN pm.meta_key = '_customer_user' AND p.ID = pm.post_id THEN pm.meta_value END ) AS user_ID,
    max( CASE WHEN pm.meta_key = '_order_total' AND p.ID = pm.post_id THEN pm.meta_value END ) AS order_total,
    max( CASE WHEN pm.meta_key = '_payment_method' AND p.ID = pm.post_id THEN pm.meta_value END ) AS payment_method

FROM wp_posts p
    LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
    LEFT JOIN wp_woocommerce_order_items oi ON p.ID = oi.order_id
WHERE post_type = 'shop_order' and post_status = 'wc-completed'
GROUP BY p.ID; 

您使用
HAVING
子句。很像
WHERE
子句,它在聚合之前过滤记录集(通常在加入之前过滤多次),而
HAVING
子句在聚合之后过滤结果集。这是在SQL中运行的最后步骤之一:

SELECT
    p.ID AS order_id,
    max( CASE WHEN pm.meta_key = '_customer_user' AND p.ID = pm.post_id THEN pm.meta_value END ) AS user_ID,
    max( CASE WHEN pm.meta_key = '_order_total' AND p.ID = pm.post_id THEN pm.meta_value END ) AS order_total,
    max( CASE WHEN pm.meta_key = '_payment_method' AND p.ID = pm.post_id THEN pm.meta_value END ) AS payment_method

FROM wp_posts p
    LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
    LEFT JOIN wp_woocommerce_order_items oi ON p.ID = oi.order_id
WHERE post_type = 'shop_order' and post_status = 'wc-completed'    
GROUP BY p.ID
HAVING payment_method <> 'X'
选择
p、 ID作为订单号,
最大值(当pm.meta_key=''u customer_user'和p.ID=pm.post_ID然后pm.meta_value END时的情况)作为用户_ID,
最大值(当pm.meta_key=''u order_total'和p.ID=pm.post_ID然后pm.meta_value END时的情况)作为order_total,
最大值(当pm.meta_key=''u payment_method'和p.ID=pm.post_ID然后pm.meta_value END时的情况)作为payment_方法
来自wp_posts p
左连接wp\u postta pm ON p.ID=pm.post\u ID
左连接wp\U商业\U订单\U p.ID上的项目oi=oi.order\U ID
其中,post_类型='shop_order'和post_状态='wc completed'
按p.ID分组
采用“X”付款方式

我认为您需要一个
包含
子句。如果您总是限定所有列,包括WHERE子句中的列,则有助于理解。这将通过p.ID向组抛出错误,并且不起作用。为什么?也许
HAVING
子句必须在
groupby
后面。我已经更新了答案。如果这不能解决问题,请告诉我。