MySQL查询 - 1列上的多个WHERE子句

Pvd*_*vdL 6 mysql sql

任何人都可以帮我建立一个基于下面的查询的查询.

正如您所看到的,我有一个产品的规格和某些组在前端构建.我知道这个问题,1列不能同时是2个值,但我只需要那些2组中的那些产品.

为了说明,product_specification_sid,id 2 3和4是尺寸,de rest 8~11是颜色,所以我想选择一个有2和3的产品.

内部连接表double不是一个选项,因为组(大小,颜色)将来可能会有所不同.

SELECT
    products.*,
    categories.*,
    manufacturers.* 
FROM products
INNER JOIN  product_categories ON product_category_pid = product_id
INNER JOIN  categories ON product_category_cid = category_id
INNER JOIN  manufacturers ON product_manufacturer = manufacturer_id
INNER JOIN  product_specifications ON product_specification_pid=product_id
WHERE 
    product_active = 1  
AND 
(
    product_specification_sid in (3)  
AND  
    product_specification_sid in (8,9,6,7,10,11)  
) 
GROUP BY product_id
Run Code Online (Sandbox Code Playgroud)

a'r*_*a'r 5

您可以改用having子句.

SELECT
    products.*,
FROM products
INNER JOIN  product_categories ON product_category_pid = product_id
INNER JOIN  categories ON product_category_cid = category_id
INNER JOIN  manufacturers ON product_manufacturer = manufacturer_id
INNER JOIN  product_specifications ON product_specification_pid=product_id
WHERE product_active = 1  
GROUP BY product_id
HAVING COUNT(CASE WHEN product_specification_sid in (3) THEN 1 END) > 0
 AND COUNT(CASE WHEN product_specification_sid in (8,9,6,7,10,11) THEN 1 END) > 0
Run Code Online (Sandbox Code Playgroud)

  • 有条件的人应该是"> 1"吗?我会认为`> = 1` /`> 0`或`= 1`. (2认同)