此SQL有什么问题?它应该返回结果,但什么也不返回

SELECT `pid`
  FROM `products`
  LEFT JOIN `prods_to_features`
    ON (`ptf_pid` = `pid`)
 WHERE (   `ptf_id` = '66'
        OR `ptf_id` = '67'
       )
   AND (`ptf_id` = '76')


不可能在左联接中使用的表具有第二个where子句?

最佳答案

正如其他人所说,WHERE子句没有任何意义。

我猜想您要说的是您想要具有功能76和功能66或67的产品。为此,您将需要两个联接:

SELECT DISTINCT products.pid
FROM products
JOIN prods_to_features AS ptf1 ON ptf1.ptf_pid=products.pid
JOIN prods_to_features AS ptf2 ON ptf2.ptf_pid=products.pid
WHERE ptf1.ptf_id='76'
AND ptf2.ptf_id IN ('66', '67')


DISTINCT将确保在产品同时具有功能66和67的情况下,仅返回产品的一个副本。

09-11 18:16
查看更多