主机不允许Mysql子查询,这可以通过其他任何方式完成吗?

时间:2013-12-04 14:40:05

标签: php mysql subquery

SELECT * FROM(SELECT * FROM `finishes` Order by `finish`, `fdate` DESC) AS `output`
GROUP BY `finish`

以上在我的localhost机器上工作得很好,但是在将它上传到我的Servage主机(命名和羞辱!)时,它会失败并抛出语法错误,当我问Servage为什么会这样,以及对子查询的支持是否可以启用后,他们断然拒绝说服务器不支持! (像往常一样糟糕的客户服务,我们期待他们。)

无论如何..有没有办法在没有子查询的情况下重写上面的内容,我想要做的就是获取表中的最新条目,按完成分组,但它需要显示属于该行的其他数据。我尝试了max(fdate),虽然这拉了正确的日期,它仍然显示数据库中第一个条目的其他列中的数据,而不是最后一个。

抓住我的头。

1 个答案:

答案 0 :(得分:0)

它现在可能对您有效,但它可能并不总是完美无缺。 (MySQL允许您使用这样的GROUP BY子句,但不保证将返回其他字段的值)

试试这个

SELECT `finishes`.*
FROM `finishes`
JOIN (SELECT `finish`, MAX(fdate) as `latest`
      FROM `finishes`
      GROUP BY `finish`) AS T1
  ON T1.`finish` = `finishes`.`finish`
   AND T1.`latest` = `finishes`.`fdate`