簡體   English   中英

這個SQL代碼怎么了

[英]what's wrong with this SQL code

我想將列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'
);

我可以看到這里沒有語法錯誤。 我在MySQL 5.5上進行了測試,該語句解析良好。

我懷疑您可能在b.IDFROM之間使用非ASCII空格字符。 嘗試刪除這兩個標記之間的所有空格和換行符,然后重新插入一個普通空格。

但這不能解決下一個問題:MySQL不支持在單個查詢中更新表和從同一表進行SELECT。 因此,您不能以這種方式使用子查詢。 這就是為什么其他答案建議使用多表UPDATE的原因。

另一種可能是您沒有共享正在運行的真實查詢。 Stack Overflow上的很多人都要求查詢的幫助,但是他們已經修改了查詢以將其發布到他們的問題中,以使其變得更簡單或隱藏專有信息。

請不要只是說“它不起作用”。 那無助於我們改善答案。 提供錯誤消息(如果有的話),並確保准確顯示您正在鍵入的語句。

為什么不只是:

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

我在這里創建了一個SQL Fiddle示例。

如果您嘗試做一些不同的事情,可以請您發布實際查詢,還是對SQL提琴中的數據模型進行更改以顯示您遇到的麻煩,並發布一個鏈接。

   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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM