如何在where条件下多次使用同一列。我想多次使用“ meta_key”和“ meta_value”。但不幸的是,它不起作用。

我已经使用了左连接语句,但是没有用。

SELECT * FROM `products` d
JOIN (select distinct product_id from products
    WHERE (meta_key="product_image" AND meta_value!="")
AND
(meta_key="product_type" AND meta_value="Soap" )
And
user_id='6' LIMIT 10) t on d.product_id = t.product_id


空结果。

最佳答案

如果您要获得同时具有两个密钥的产品,

SELECT p.*
FROM products p join
     (SELECT product_id
      FROM cs_inventory
      WHERE ((meta_key = 'product_image' AND meta_value <> '') OR
             (meta_key = 'product_type' AND meta_value= 'Soap' )
            ) AND
            user_id = 6
      GROUP BY product_id
      HAVING COUNT(*) = 2
      LIMIT 10
     ) i
     ON p.product_id = i.product_id;


一行不能为单个列具有多个值,因此您的子查询将永远不会返回任何值。

而是使用OR并检查该产品的两行均可用。

关于mysql - 如何在条件中多次使用同一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56213185/

10-12 15:06
查看更多