簡體   English   中英

MYSQL:同一語句中的 SELECT 和 UPDATE 不起作用 - 1064 錯誤

[英]MYSQL: SELECT and UPDATE in the same statement won't work - 1064 error

我有一個在 SQL 中工作的 UPDATE 和 SELECT 語句,但是我無法在 MYSQL 中復制相同的結果。

我有一張桌子(TBL1),有 4 列:-

col1: registration (VARCHAR)

col2: date

col3: oldest date flag (values Y or blank)

col4: index (priamry key - auto-increment).

一個正在進行的過程繼續向表中添加注冊和日期。 在一批添加之后,任何 col3 'Y' 標志將被刪除,然后更新過程將為注冊日期最早的每一行設置 col3 值 = 'Y'。

這是 SQL 代碼,在較早的過程刪除任何先前的 col3 'Y' 值后,它按預期工作;-

UPDATE T1

SET T1.Col3 = 'Y'   
SELECT FROM TBL1 AS T1  
INNER JOIN (  SELECT Col1 AS REG, MIN(Col2) AS MINDATE  
              FROM TBL1  
              GROUP BY Col1) AS T2  
              ON T1.Col1 = T2.REG and T1.Col2 = T2.MINDATE         

結果正確識別每個唯一注冊的最舊日期並在 col3 中設置“Y”。

我需要在 MYSQL 中復制這個過程,但經過很多努力我找不到辦法做到這一點?

如果您只是在尋找相同的邏輯,但使用 MySQL 的更新連接語法,請嘗試以下操作:

UPDATE TBL1 T1
INNER JOIN
(
    SELECT Col1 AS REG, MIN(Col2) AS MINDATE
    FROM TBL1
    GROUP BY Col1
) AS T2
    ON T1.Col1 = T2.REG and T1.Col2 = T2.MINDATE
SET T1.Col3 = 'Y';

暫無
暫無

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

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