MYSQL:同一条语句中的SELECT和UPDATE无法正常工作-1064错误

时间:2018-08-19 13:20:15

标签: mysql

我有一个在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中复制此过程,但是经过大量的努力,我找不到解决方法?

1 个答案:

答案 0 :(得分:0)

如果您只是在寻找相同的逻辑,但是使用MySQL的update join语法,请尝试以下操作:

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';