mysql'IN'子句问题

时间:2013-12-10 07:27:21

标签: mysql sql

我有两个表,如下,

Table Apple:

----------------------------------------
      id         |       type          |
----------------------------------------
   1             |         3           |
----------------------------------------
   2             |         3           |
----------------------------------------
   3             |          3          |
----------------------------------------


Table Orange:

-------------------------------------------
      orange id     |      apple id       |
-------------------------------------------
         1          |            1         |
-------------------------------------------
         2          |             2        |
-------------------------------------------
         3          |             3        |
-------------------------------------------
         4          |             1        |
-------------------------------------------- 
         4          |             2        |
--------------------------------------------
         4          |             3        |
--------------------------------------------

我的查询如下,

SELECT orange_id 
FROM   orange 
WHERE  apple_id IN (SELECT id 
                    FROM   apple 
                    WHERE  type = 3); 

以上查询返回以下结果集

1,2,3

但我需要1,2,3,4。我的查询出错了。?请帮我。

1 个答案:

答案 0 :(得分:2)

为什么不使用联接呢?该查询看起来很丑陋并且没有优化,但是,我仍然不知道为什么它不起作用。使用类似于此的联接...

select orange_id from Orange
inner join Apple on Apple.id = Orange.apple_id
where Apple.type = 3

希望它有所帮助 利奥