此查询在服务器上对我不起作用,否则它在本地主机上的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
有什么可以帮到我的吗? 提前谢谢。
答案 0 :(得分:0)
虽然它看起来是正确的,但我在过去看到了一些答案,由于某些原因,使用“AS”子句来表示别名,以及“AS”列名称。我会从那里开始。其次,我注意到你正在使用join和comma / 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_theme_certification上有一个复合索引(cat_mod_id,date_expiration)。