这是数据表
BuyID   AttributeID   Value
1            1       单间出租
1            2          0
1            3          1
1            4        1000
2            1       整套出租
2            2        地址
2            3          1
2            4        1000
3            1       单间出租
3            2          9
3            3         10
3            4        1500条件一:`AttributeID`=1 AND `Value`='单间出租'
条件二:`AttributeID`=4 AND `Value`>=1000 AND `Value`<=2000我改如何搜索出条件一和条件二的交集呢?
即搜索出的结果只有一条,`BuyID`=1尝试一:SELECT * FROM jm_user_buy_attribute WHERE (`AttributeID`=1 AND `Value`='单间出租') OR (`AttributeID`=4 AND `Value`>=1000 AND `Value`<=2000) GROUP BY BuyID
尝试一搜索出来的结果只是满足条件一或者条件二的结果,但不能筛选出交集。尝试二:SELECT * FROM jm_user_buy_attribute WHERE (`AttributeID`=1 AND `Value`='单间出租') OR (`AttributeID`=4 AND `Value`>=1000 AND `Value`<=2000) GROUP BY BuyID
尝试二搜索出来的结果只是去除了相同的BuyID尝试三:SELECT * FROM jm_user_buy_attribute as b1 left join jm_user_buy_attribute as b2 on b1.BuyID=b2.BuyID where b1.AttributeID=1 AND b1.Value='单间出租' OR b2.AttributeID=4 AND b2.Value>=1000 AND b2.Value<=2000
尝试二搜索出来的结果不正确。
http://bbs.csdn.net/topics/390325234
这是我在MYSQL板块那里发布过的!
解决问题后可以请进去领分

解决方案 »

  1.   

    你可以把OR改为AND  ,问一句,有这样的记录吗  `AttributeID`=1 和 `AttributeID`=4 有交集吗
      

  2.   

    单独 select * from jm_user_buy_attribute where AttributeID=1 AND Value='单间出租'

    Array
    (
        [0] => Array
            (
                [BuyID] => 1
                [AttributeID] => 1
                [Value] => 单间出租
            )    [1] => Array
            (
                [BuyID] => 3
                [AttributeID] => 1
                [Value] => 单间出租
            ))单独 select * from jm_user_buy_attribute where AttributeID=4 AND Value>=1000 AND Value<=2000

    Array
    (
        [0] => Array
            (
                [BuyID] => 1
                [AttributeID] => 4
                [Value] => 1000
            )    [1] => Array
            (
                [BuyID] => 2
                [AttributeID] => 4
                [Value] => 1000
            )    [2] => Array
            (
                [BuyID] => 3
                [AttributeID] => 4
                [Value] => 1500
            ))
    所以对 BuyID 取交集为select * from
     (select * from jm_user_buy_attribute where AttributeID=1 AND Value='单间出租') t1,
     (select * from jm_user_buy_attribute where AttributeID=4 AND Value>=1000 AND Value<=2000) t2
     where t1.BuyID=t2.BuyID

    Array
    (
        [0] => Array
            (
                [BuyID] => 1
                [AttributeID] => 4
                [Value] => 1000
            )    [1] => Array
            (
                [BuyID] => 3
                [AttributeID] => 4
                [Value] => 1500
            ))