0

列 URL のすべての行を Test に更新したいのですが、以下のクエリから次のエラーが発生します

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM STx AS a LEFT JOIN Routes AS b ON a.RouteID = b.RouteID WHERE a.GroupID ' at line 3

UPDATE Routes SET URL = 'test' 
WHERE ID in (
    SELECT b.ID
    FROM Stx a left JOIN Routes b on a.RouteID = b.RouteID
    where a.GroupID = 39 and a.Status = 'Provisioned'
);
4

3 に答える 3

4

私が見ることができる構文エラーはここにはありません。MySQL 5.5でテストしたところ、ステートメントは正常に解析されました。

b.IDとの間にASCII以外の空白文字があるのではないかと思いますFROM。これら2つのトークン間のすべてのスペースと改行を削除してから、プレーンスペースを再挿入してみてください。

しかし、それは次の問題を修正しません。MySQLは、単一のクエリでのテーブルのUPDATEと同じテーブルからのSELECTをサポートしていません。したがって、ドンのようにサブクエリを使用することはできません。そのため、他の回答ではマルチテーブルUPDATEの使用が提案されています。

もう1つの可能性は、実行している実際のクエリを共有していないことです。Stack Overflowの多くの人がクエリのサポートを求めていますが、クエリを変更して、質問に投稿したり、簡単にしたり、専有情報を非表示にしたりしています。

「うまくいかない」とだけ言わないでください。それは私たちの答えを改善するのに役立ちません。エラーメッセージがある場合はそれを表示し、入力しているステートメントを正確に表示するようにしてください。

于 2013-02-08T20:26:33.547 に答える
2

なぜだけではないのですか?

UPDATE Routes a JOIN Stx b ON (a.routeid = b.routeid)
 SET a.URL = 'test'
where b.groupid = 39 and b.status = 'Provisioned'

ここでSQLフィドルの例を作成しました。

少し違うことをしようとしている場合は、実際のクエリを投稿するか、SQLフィドルのデータモデルに変更を加えて問題を示し、そのリンクを投稿してください。

于 2013-02-08T20:18:14.233 に答える
0
   UPDATE Routes AS b
    JOIN Stx AS a ON a.RouteID = b.RouteID
    SET b.URL = 'test'
    WHERE a.GroupID = 39 and a.Status = 'Provisioned'
于 2013-02-08T20:27:15.710 に答える