【问题标题】:SQL syntax error - SELECT statement within INSERTSQL 语法错误 - INSERT 中的 SELECT 语句
【发布时间】:2014-12-09 04:45:35
【问题描述】:

我有这行 sql,它在 select 语句的右括号之后给了我一个语法错误。我相信我可以用这种方式编写代码。有什么替代品吗?

select 语句中的变量来自 GET,其他来自 POST。任何帮助表示赞赏。

$sql2="INSERT INTO playerRegSeason 
       (playerID, year, teamID, gp, minutes, pts, oreb, dreb, reb, 
        asts, stl, blk, turnover, pf, fga, fgm, fta, ftm, tpa, tpm)
VALUES ((
       SELECT playerID FROM players WHERE firstname='$firstname' 
       AND lastname='$lastname' AND firstseason=$firstseason), $year, 
      '$team', $gp, $minutes, $pts, $oreb, $dreb, $reb, $asts, $stl, 
       $blk, $turnover, $pf, $fga, $fgm, $fta, $ftm, $tpa, $tpm)";

【问题讨论】:

    标签: mysql syntax


    【解决方案1】:

    从选择插入时不要使用VALUES

    INSERT INTO abc (foo, bar)
    SELECT x, y FROM z
    

    【讨论】:

      【解决方案2】:

      使用这个。

      $sql2="INSERT INTO playerRegSeason 
             (playerID, year, teamID, gp, minutes, pts, oreb, dreb, reb, 
              asts, stl, blk, turnover, pf, fga, fgm, fta, ftm, tpa, tpm)
      
             SELECT playerID, $year, '$team', $gp, $minutes, $pts, $oreb, 
               $dreb, $reb, $asts, $stl, $blk, $turnover, $pf, $fga, $fgm, 
               $fta, $ftm, $tpa, $tpm FROM players WHERE firstname='$firstname' 
             AND lastname='$lastname' AND firstseason=$firstseason";
      

      【讨论】:

      • 我收到此错误:错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 'SELECT playerID FROM player WHERE firstname='' AND lastname='' AND firstseason=' 附近使用正确的语法
      • @user2884641:查看 sql fiddler sqlfiddle.com/#!2/f4ef5d/1sqlfiddle.com/#!2/ab89e/1 中的示例
      【解决方案3】:
      insert into table1 (field1, field2, ...)
      select col1, col2, ...
      from table2
      where ....
      

      【讨论】:

        【解决方案4】:

        你写的SQL语句不正确,需要去掉values子句或者可以参考Insert with select学习如何用select语句写插入

        【讨论】:

          【解决方案5】:

          使用这个查询而不是它正在工作的那个

          $sql2="INSERT INTO playerRegSeason (playerID, year, teamID, gp ,分钟, pts, oreb, dreb, reb, asts, stl, blk, 营业额, pf, fga, fgm, fta, ftm, tpa, tpm)

              values(SELECT playerID,year, $team, $gp, $minutes, $pts, $oreb, $dreb, 
              $reb, $asts, $stl, $blk, $turnover, $pf, $fga, $fgm, $fta, $ftm, $tpa, $tpm
              WHERE firstname='$firstname' 
              AND lastname='$lastname' AND firstseason='$firstseason')";
          

          【讨论】:

            猜你喜欢
            • 2014-02-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-21
            相关资源
            最近更新 更多