Mysql执行排名查询时出现语法错误


mysql syntax error on performing a ranking query

我想执行排名查询,但我不确定什么是正确的语法以下是我的查询:

  static public function sortranks(){
    global $db;
    $sql ="TRUNCATE TABLE `ranking`";
    $db->query($sql);
    $sql = "INSERT INTO `ranking` (`user_id`) VALUES 
    ( SELECT `employe_id` FROM `rates_employe` WHERE `status` = '0' ORDER BY rawpoint DESC ) ";
    $db->query($sql);
    $sql = "UPDATE  rates_employe , ranking  SET rates_employe.rank = ranking.rank WHERE 
    rates_employe.employe_id = ranking.user_id ";
    $db->query($sql);
    echo 'ok';
    exit;
  }

当我运行这个查询时,我一直得到语法错误

数据库查询失败:你的SQL语法有错误;检查对应于MySQL服务器版本的手册语法使用near 'SELECT employe_id FROM rates_employe WHEREstatus = '0' ORDER BY rawpoint ' at line 2

您应该一个一个地执行查询,而不是将它们连接在一起。

用简单的赋值改变.=字符串的连接,赋值每个查询后,执行它。如:

 $sql = "TRUNCATE TABLE ranking";
 $db->query($sql);
 $sql = "INSERT INTO `ranking`(`user_id`) VALUES ..."; 
 $db->query($sql);

也从查询中删除VALUES:

INSERT INTO ranking (user_id)(SELECT employe_id FROM rates_employe WHERE status = '0' ORDER)

对不起,如果我听起来很迂腐,但在英语中,Employee的拼写是在单词的末尾有两个e

尝试分别运行每个查询:

<>之前静态公共函数sortranks(){全球美元分贝;$sql ="TRUNCATE TABLE ranking";美元$ db ->查询(sql);$sql = "INSERT INTO ' ranking ' (' user_id ') VALUES .(SELECT ' employe_id ' FROM ' rates_employee ' WHERE ' status ' = '0' ORDER BY ' rawpoint ' DESC)";美元$ db ->查询(sql);$sql = "UPDATE rates_employee,排名设置rates_employee。Rank =排名。排名在哪里rates_employe。Employe_id =排名。user_id";美元$ db ->查询(sql);回声"完成";退出;}