› 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 · Sep 3, 2011 · 6147 views
    This topic created in 5512 days ago, the information mentioned may be changed or developed.
    这一句执行,没有反应,只能强制执行,同时有查到是条慢查询
    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 replies  •  1970-01-01 08:00:00 +08:00
    keakon
        1
    keakon  
       Sep 3, 2011
    这个例子应该可以直接用inner join吧…

    不到万不得已不用子查询
    pensz
        2
    pensz  
       Sep 4, 2011
    我的判断是:

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

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

    怀疑这是mysql的bug,不知道挂掉之后mysql做了什么
    summic
        4
    summic  
    OP
       Sep 4, 2011
    @keakon 想知道这么做为什么是错的
    CoX
        5
    CoX  
       Sep 4, 2011
    order 是关键字,最好别用这个表名。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   751 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:18 · PVG 05:18 · LAX 14:18 · JFK 17:18
    ♥ Do have faith in what you're doing.