Press "Enter" to skip to content

MySQL也真是让人郁闷(关于子查询中使用limit)

在MySQL4.1中子查询是不能使用LIMIT的,手册中也明确指明 "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' "
也就是说,这样的语句是不能正确执行的。
select * from table where id in (select id from table limit 10);
但是,,但是,,,只要你再来一层就行。。如:
select * from table where id in (select t.id from (select * from table limit 10)as t)
你说说,MySQL是不是很让人无语??

14 Comments

  1. 你好! 这篇文章不能写得好多了! 阅读这篇文章让我想起了我以前的室友! 他一直在讲述这个。 我当然会把这篇文章寄给他。
    相当肯定他会读得很好。 非常感谢分享!

  2. 泡一泡
    泡一泡 July 13, 2017

    把里括号里面的句子单独拿出来,跟你最初想查的有啥区别。速度还是慢啊

  3. 泡一泡
    泡一泡 July 13, 2017

    把括号里拿出来跟你想查的有什么区别?

  4. outtime
    outtime December 17, 2014

    thank you
    best wishies for you

  5. xsk
    xsk May 26, 2014

    谢谢鸟哥,解决了!

  6. pan
    pan July 13, 2011

    额,这都被你发现了,神人

  7. 5idev
    5idev February 22, 2011

    谢谢楼主,因为这次在子查询用到了limit,mysql不支持,用楼主的方法解决了!

  8. LungZeno
    LungZeno May 11, 2009

    測試了一下,又是自然人類語言的歧義性使人誤解……
    “This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery'” 的意思是,這版本的 MySQL 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查詢,即是支持非 IN/ALL/ANY/SOME 子查詢的 LIMIT 子查詢。
    歧義點在於各生字的 apply 和組合順序,這句子的正確結合順序是 “This version of MySQL doesn’t yet support ((LIMIT-(IN/ALL/ANY/SOME)) subquery)” (”-“符號為 hyphen ),有可能的錯誤理解是 “This version of MySQL doesn’t yet support ((LIMIT subquery) & ((IN/ALL/ANY/SOME) subquery))” 。

  9. ilsanbao[小宝]
    ilsanbao[小宝] January 14, 2009

    无语的有点BT

  10. RainChen
    RainChen December 27, 2008

    更感兴趣的,你怎么发现的,一般都很少用到2层子查询了

Leave a Reply

Your email address will not be published. Required fields are marked *