0

我有一个非常混乱的查询字符串,此时看起来像这样:

SELECT SQL_CALC_FOUND_ROWS m.*,
(
  SELECT count(1) FROM votazioni_messaggi v
  WHERE v.idMeggaggio=m.ID
) AS Votato,

AVG(voto) AS votazioneMedia, 
n.nomeUtente,
FROM messages m 
LEFT JOIN votazioni_messaggi v ON v.idMessaggio = m.ID 
LEFT JOIN utenti n ON a.idUtente=n.ID
WHERE n.idUser='$idUser' AND m.Genre IN('animal', 'love') 
GROUP BY m.ID,  
LIMIT $partenza, 20

换句话说,我必须一次选择 20 条消息,它们的类型为“动物”和“爱情”,每条消息都会检索有关用户的信息并计算投票平均值。计数和分组我可以知道用户是否已经投票或没有消息。

现在我必须为 ORDER 消息 BY 插入时间设置最后一个子句(我在 messages.InsertionTime 表中有这个数据)。

该子句应该是ORDER BY messages.InsertionTime但我怎么能知道我必须放置它的确切位置?

4

1 回答 1

1

尝试这个:

SELECT SQL_CALC_FOUND_ROWS m.*,
       (SELECT count(1) FROM votazioni_messaggi v
        WHERE v.idMeggaggio=m.ID
       ) AS Votato,
       AVG(voto) AS votazioneMedia, 
       n.nomeUtente,
FROM messages m 
LEFT JOIN votazioni_messaggi v ON v.idMessaggio = m.ID 
LEFT JOIN utenti n ON a.idUtente=n.ID
WHERE n.idUser='$idUser' AND m.Genre IN ('animal', 'love') 
GROUP BY m.ID
ORDER BY m.InsertionTime 
LIMIT $partenza, 20;

你至少有两个问题。一个是结尾的逗号group by。另一个是使用表名而不是表别名。

于 2013-09-04T02:07:23.443 回答