【问题标题】:mysql 'IN' clause problems [closed]mysql'IN'子句问题[关闭]
【发布时间】:2013-12-10 07:27:21
【问题描述】:

我有两张如下表,

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。我的查询哪里出错了。?请帮我。

【问题讨论】:

  • 如果表变得更大,这不是执行该查询的好方法。
  • 您确定结果吗? def 应该返回 6 行...
  • 有了这些数据,您的查询应该返回 1,2,3,4,4,4
  • 为我工作:sqlfiddle.com/#!2/d48f6/1
  • 尝试使用select distinct orange_id from Orange where apple_id in ( select id from Apple where type= 3 );得到1,2,3,4

标签: mysql sql


【解决方案1】:

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

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

希望对你有帮助 狮子座

【讨论】:

  • 我很抱歉,伙计们。很抱歉浪费您的时间。这是我粗心的错误。但是我从 Leo 那里得到了优化的代码。谢谢狮子座。
猜你喜欢
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
相关资源
最近更新 更多