Php Mysql-查询在服务器上不工作

Php Mysql-查询在服务器上不工作,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,此查询在服务器上不适用,否则它在本地主机上的Phpmyadmin上正常工作: SELECT * FROM op_theme_certification AS t INNER JOIN op_category_module AS c ON t.cat_mod_id = c.cat_mod_id, (SELECT cat_mod_id, MAX(date_expiration) AS max_date FROM op_theme_certification GROUP BY cat_mod_

此查询在服务器上不适用,否则它在本地主机上的Phpmyadmin上正常工作:

SELECT * FROM op_theme_certification
AS t 
INNER JOIN op_category_module AS c 
ON t.cat_mod_id = c.cat_mod_id, 
(SELECT cat_mod_id, MAX(date_expiration) AS max_date FROM op_theme_certification 
GROUP BY cat_mod_id) AS b 
WHERE t.doc_id = '1' 
AND t.cat_mod_id = b.cat_mod_id 
AND t.date_expiration = b.max_date
有人能帮我吗?
提前感谢。

尽管它看起来是正确的,但我在过去看到过一些答案,出于某种原因,它们不赞成使用AS子句作为表的别名,也不赞成使用列名。我会从那里开始。其次,我注意到您使用的是join与逗号/where-join的混合。以下是您现在拥有的替代方案

SELECT 
      * 
   FROM 
      op_theme_certification t
         INNER JOIN op_category_module c
            ON t.cat_mod_id = c.cat_mod_id
         INNER JOIN 
            ( SELECT 
                    cat_mod_id, 
                    MAX(date_expiration) max_date 
                 FROM 
                    op_theme_certification
                 GROUP BY 
                    cat_mod_id) b
            ON t.cat_mod_id = b.cat_mod_id 
           AND t.date_expiration = b.max_date
   WHERE 
      t.doc_id = '1' 

我肯定会在您的op_主题认证上有一个复合索引,关于cat_mod_id,date_expiration。

您使用的是哪个操作系统作为本地操作系统,哪个在服务器上?我在服务器上使用的是wamp mysql 5.5.20我在服务器上使用的是mysql 5.5.35,运行的是Phpmyadmin还是PHP代码?如果是后者,您可以发布运行查询的PHP代码吗?phpMyAdmin本身在服务器上运行,先生!请更精确一点!!谢谢你的回答,但是你的适应代码对我来说不起作用。我认为它与子查询'SELECT cat\u mod\u id'有关,MAXdate_expiration max_date来自op_主题认证组由cat_mod_id b`my problem It on:和t.date_expiration=b.max_date选择*来自op_主题认证t内部加入op_类别认证模块c ont、 cat_mod_id=c.cat_mod_id内部连接选择cat_mod_id,MAXdate\u expiration t.cat\u mod\u id=b.cat\u mod\u id和t.date\u expiration=b.max\u date和doc\u id='1'其中t.doc\u id='1'