此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的情况下,仅返回产品的一个副本。