V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
summic
V2EX  ›  MySQL

mysql 子查询遇到诡异问题,求指点

  •  
  •   summic · 2011-09-03 20:57:25 +08:00 · 5157 次点击
    这是一个创建于 4836 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这一句执行,没有反应,只能强制执行,同时有查到是条慢查询
    select *

    from order

    where FId IN
    (select FOrderId from suborder where uid in (1))
    limit 0, 20;


    但是我子查询改成这样就可以了

    select FOrderId as FId from suborder where uid in (1)


    我的版本是 5.1.58
    5 条回复    1970-01-01 08:00:00 +08:00
    keakon
        1
    keakon  
       2011-09-03 21:21:54 +08:00
    这个例子应该可以直接用inner join吧…

    不到万不得已不用子查询
    pensz
        2
    pensz  
       2011-09-04 12:25:27 +08:00
    我的判断是:

    1 原有sql没有错误,如果有错误,会提示,而不是没有反应;
    2 后面查询时mysql可能有了缓存或者mysql服务器压力较少,所以能够查询出来结果。
    summic
        3
    summic  
    OP
       2011-09-04 17:03:41 +08:00
    非常感谢答复

    1、sql 语句没有问题
    2、后面查询的时候有缓存我觉得也不太象,因为子查询如果有结果,能够成功,只有子查询没查到结果的时候才会挂掉

    怀疑这是mysql的bug,不知道挂掉之后mysql做了什么
    summic
        4
    summic  
    OP
       2011-09-04 17:04:59 +08:00
    @keakon 想知道这么做为什么是错的
    CoX
        5
    CoX  
       2011-09-04 17:35:34 +08:00
    order 是关键字,最好别用这个表名。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:30 · PVG 15:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.