2012-05-11 67 views
0

我有一个带有布尔值的表,我想知道是否有一组id具有两个值。mysql如果...语句符合两个条件,则选择true

这个SQL选择组产品我想测试:

SELECT 
    cp.ItemID, 
    cp.IsUnitsOfMeasure 
from grouped_products gp 
LEFT JOIN products p ON p.product_id = gp.product_id 
LEFT JOIN c_products cp ON cp.ItemID = p.product_id 
WHERE gp.group_id=123 

我想找出是否cp.IsUnitsOfMeasure为组同时包含1和0

回答

0
SELECT gp.group_id, 
     SUM(cp.IsUnitsOfMeasure=0) AND SUM(cp.IsUnitsOfMeasure=1) AS ContainsBoth, 
FROM  grouped_products AS gp 
    LEFT JOIN products  AS p USING (product_id) 
    LEFT JOIN c_products AS cp ON cp.ItemID = p.product_id 
GROUP BY gp.group_id 

ContainsBothTRUEFALSE以指示无论每个组别是否包含 a c_productIsUnitsOfMeasure=0另一个与=1

1

试试这个:

SELECT 
    cp.ItemID, 
    SUM(cp.IsUnitsOfMeasure) AS sum, 
    COUNT(cp.IsUnitsOfMeasure) AS count, 
    from grouped_products gp 
LEFT JOIN products p ON p.product_id = gp.product_id 
LEFT JOIN c_products cp ON cp.ItemID = p.product_id 
WHERE gp.group_id=123 
  • 如果sum等于count然后所有的线都为1
  • 如果sum是等于0,那么所有的线都为0
  • 在所有其他情况下
  • :你有两个1和0的组中
+0

谢谢你,这个答案实际上对我更有用,尽管其他答案更多地与我实际要求的相关。 – charliefarley321