2016-12-07 32 views
-1

下面的更新查詢不工作,而是選擇查詢裏面是:我的UPDATE查詢有子查詢有什麼問題?

UPDATE tb_alunos_detalhes A 
SET A.ADTELALUNO = B.TEL 
FROM B (
    SELECT ADID ID, 
      (CASE 
       WHEN `ADTELALUNO` <> '' THEN (CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(`ADTELALUNO`, ' ', 1), ' ', -1), ' 9-', SUBSTRING(SUBSTRING_INDEX(SUBSTRING_INDEX(`ADTELALUNO`, ' ', 2), ' ', 10),6,10))) 
       ELSE '' 
      END) TEL 
    FROM tb_alunos_detalhes) B 
WHERE A.ADID = B.ID 

它給了我下面的錯誤:

Unexpected token. (near "(" at position 62) A new statement was found, but no delimiter between it and the previous one. (near "SELECT" at position 67) Unexpected token. (near ")" at position 381) Unexpected token. (near "B" at position 383)

我在做什麼錯?

+0

我試圖改進問題和標題中的文字。還刪除標籤:PHP和SQL,因爲它只是關於MySQL – agold

回答

0

您可能正在尋找一個update-join語法像

UPDATE tb_alunos_detalhes A 
JOIN (
    SELECT ID, 
      (CASE 
       WHEN `ADTELALUNO` <> '' THEN (CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(`ADTELALUNO`, ' ', 1), ' ', -1), ' 9-', SUBSTRING(SUBSTRING_INDEX(SUBSTRING_INDEX(`ADTELALUNO`, ' ', 2), ' ', 10),6,10))) 
       ELSE '' 
      END) TEL 
    FROM tb_alunos_detalhes) B ON A.ADID = B.ID 
SET A.ADTELALUNO = B.TEL; 
0
use this for reference , and i think this will work for you 
UPDATE(
    SELECT Ord.OrderID, Ord.Completed 
    FROM Order1 Ord 
    WHERE EXISTS(
      SELECT * 
      FROM Product P 
      INNER JOIN Delivery D 
       ON Delivery.Delivered = 0 AND P.ProductID = Delivery.DeliveryID 
      WHERE Ord.OrderID = P.OrderID 
     ) 
) 
SET Completed = 'NO' ; 

//或不派生表:

UPDATE Order1 Ord 
SET Completed = 'NO' 
WHERE EXISTS(
     SELECT * 
     FROM Product P 
      INNER JOIN Delivery D 
      ON Delivery.Delivered = 0 AND P.ProductID = Delivery.DeliveryID 
     WHERE Ord.OrderID = P.OrderID 
    ); 
0

正確的語法是:

UPDATE tb_alunos_detalhes A 
    SET A.ADTELALUNO = (CASE WHEN `ADTELALUNO` <> '' 
          THEN (CONCAT(SUBSTRING_INDEX(SUBSTRING_INDEX(`ADTELALUNO`, ' ', 1), ' ', -1), ' 9-', SUBSTRING(SUBSTRING_INDEX(SUBSTRING_INDEX(`ADTELALUNO`, ' ', 2), ' ', 10),6,10))) 
          ELSE '' 
         END); 

A JOIN 沒有必要。